从 Windows 应用程序启动 WebApi 应用程序

Launching a WebApi application from a Windows App

我有一个简单的 WebApi2 应用程序可以处理各种 REST 请求。它本质上是 SQL 服务器数据库上各种 CRUD 操作的前端。到现在为止,我从来没有 运行 从 Visual Studio 之外,虽然我通常不做 Windows 特定的事情,但我在这里。

我的目标是将这个网络应用程序的功能构建到 Windows 桌面应用程序中(或者至少能够从 windows 程序控制网络应用程序),主要是为了让用户可以启动网络应用程序,停止它,看看谁在连接它,等等,但我不知道如何连接这组特定的点。 google.

这实际上是一件非常困难的事情

WebApp 部分也需要在启动时被告知一些事情(只是字符串,所以如果答案涉及执行各种系统命令行以告诉 WebApp start/stop/etc 我可以传入什么我需要以某种方式在命令行上,这很好)。

最终,我们的目标是向用户提供一个安装程序,除非他真的想知道,否则他不必知道涉及网络服务器。

那么我将如何完成这部分呢? (如果这个问题太模糊,请告诉我原因,我会根据需要进行修改)。

Web API 的优点之一是能够在 Web 服务器(例如 IIS)之外托管。例如,您可以将其托管在 Windows Forms 应用程序中。 article with detailed instructions 介绍如何实现这一点。

您将有一个 Startup class 将用于引导:

public class Startup 
{ 
    // This code configures Web API. The Startup class is specified as a type
    // parameter in the WebApp.Start method.
    public void Configuration(IAppBuilder appBuilder) 
    { 
        // Configure Web API for self-host. 
        HttpConfiguration config = new HttpConfiguration(); 
        config.Routes.MapHttpRoute( 
            name: "DefaultApi", 
            routeTemplate: "api/{controller}/{id}", 
            defaults: new { id = RouteParameter.Optional } 
        ); 

        appBuilder.UseWebApi(config); 
    } 
}

然后只需启动侦听器即可:

using (WebApp.Start<Startup>("http://localhost:8080"))
{
    Console.WriteLine("Web Server is running.");
    Console.WriteLine("Press any key to quit.");
    Console.ReadLine();
}

这将使您的 Web API 在本地端口 8080 上可用,并且您的应用程序可以向它发送 HTTP 请求。

基本上您要查找的关键字是:self hosting asp.net web api