【问题标题】:How to open exe using WebAPI and class library如何使用 WebAPI 和类库打开 exe
【发布时间】:2019-06-03 20:38:43
【问题描述】:

我正在 c# .NET 框架 4.6.1 中创建 WebAPI。我取了一个空模板,添加了一个控制器:

 public class InfoController : ApiController
{
    public bool LaunchNotePad()
    {
        AppServices as = new AppServices();
        bool result = as.LaunchNotePad();
        return result;
    }
    
}

我在同一个解决方案中有一个类库,它有一些方法如下:

public class AppServices
    {
        System.Diagnostics.Process.Start();
        public bool LaunchApplication()
        {
            bool result = false;
            Process.Start("notepad.exe", "SomeName");
            return true;

        }
    }

在我的 WebApiConfig.cs 中:

config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );  

当我托管它并运行 URL http://IPAddress/api/Info/LaunchNotePad 时,我希望它实际上会在服务器中打开记事本并返回 true,但事实并非如此。相反,它显示了一些像这样的错误:

<Error>
<Message>
The requested resource does not support http method 'GET'.
</Message>
</Error>

简而言之,我想从 API 调用一个可以访问服务器上的 exe 文件的类库。在这个例子中,我展示了记事本作为示例,但实际上它是我们创建的一个 exe。所以每次我发送请求时,它都必须在托管它的服务器中打开记事本。

这可能吗?我错过了什么?

我添加了一张图片来展示我想要实现的目标:

【问题讨论】:

  • 这个问题与打开EXE无关。它完全与路由和您的控制器方法有关。
  • @John ,我可能没有在问题中明确解释。但我想通过 Web API 打开记事本。有可能吗?
  • “我希望这实际上会在服务器中打开记事本并返回 true,但事实并非如此。相反,它显示了一些错误,如下所示:请求的资源不支持 http 方法'GET'。" - 表示路由存在问题,或者您需要[HttpGet] 属性。不管你的控制器方法做什么,事实是 ASP.NET 不知道如何将请求路由到你的控制器。因此,它与打开 EXE 无关。
  • 如果您希望在您的 API 在服务器上运行时在客户端计算机上打开 exe,这是不可能的。
  • @ChetanRanpariya,不,我想在托管 API 的服务器上打开 exe

标签: c# asp.net-mvc asp.net-web-api class-library


【解决方案1】:

由于这是一个 API 控制器,它默认支持 GET、POST、PUT、DELETE 方法。将 [HttpGet] 属性添加到您的 LaunchNotePad 方法或将您的方法名称更改为 GetLaunchNotePad。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    相关资源
    最近更新 更多