首页 > 解决方案 > 我可以从 Visual C# 项目中的 WPF 应用程序部署 Web 服务 api 吗?

问题描述

我对 ASP.NET 很陌生,并且在这个问题上停留了很长时间。我有一个当前可用的 WPF 应用程序(.NET 框架)。这是一个用于控制某些外部设备(机器人)的程序。我在我的 Visual Studio 2017 中将该 WPF 应用程序的 C# 项目作为可编辑项目。

我想要做的是使用该程序(WPF App)部署Web API服务并从Web API使用WPF App中的功能,例如我有命令A.FORWARD在WPF App的按钮中向前移动机器人,我想进行 Web API 服务调用localhost:XXXX/api/moveforward以调用该命令 ( A.FORWARD)。

首先,我尝试使用 .NET Framework 4.6.1 创建 Web API 服务,并将用于控制机器人的代码和依赖项从 WPF 应用程序复制到它。但是在部署 Web API 之后,我发现无法从 Web API 访问外部设备(机器人)。

其次,我尝试将用于部署 API 服务的所有代码复制到 WPF 应用程序。但我发现 API 服务不会运行(Application_Start()in Global.asax.cs),我不能强制它运行。

为了强制 WPF 应用程序运行 API,我复制了所有需要的文件,特别是Global.asax.cs运行包含这个的 API

public void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    GlobalConfiguration.Configure(WebApiConfig.Register);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

...然后我通过单击某个按钮将其添加到调用中MainWindow.xaml.cs

public void ButtonEmotion_Click(object sender, RoutedEventArgs e)
{
    new Global().Application_Start();
}

这些努力说:

抛出异常:System.Web.dll 中的“System.InvalidOperationException” System.Web.dll 中发生“System.InvalidOperationException”类型的未处理异常
在应用程序的预启动初始化阶段无法调用此方法。

标签: c#asp.netwpfrestasp.net-web-api

解决方案


推荐阅读