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

时间:2017-01-25 08:24:07

标签: c# asp.net asp.net-web-api windows-applications

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

我的目标是将这个webapp的功能构建到Windows桌面应用程序中(或者至少能够从windows程序控制webapp),主要是因为用户可以启动Webapp,停止它,看看谁是连接它等,但我不知道如何连接这个特定的点集。谷歌实际上是一件非常艰难的事情。

WebApp部分也需要在启动时告诉一些事情(只是字符串,所以如果答案涉及执行各种系统命令行告诉WebApp启动/停止/等等我可以传递我需要的内容以某种方式在命令行上,这很好)。

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

那么我将如何完成这一部分呢? (如果这个问题太模糊,请告诉我原因,并在必要时对其进行修改。)

1 个答案:

答案 0 :(得分:0)

Web API的一个优点是能够在IIS等Web服务器之外托管。例如,您可以在Windows窗体应用程序中托管它。这是关于如何实现这一目标的article with detailed instructions

你将有一个Startup类用于引导:

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();
}

这将在本地端口8080上提供您的Web API,您的应用程序可以向其发送HTTP请求。

因此,您所寻找的关键字基本上是:self hosting asp.net web api