转换Web API以使用自托管

我正在尝试将现有的ASP.NET Web API项目(当前在IIS中托管)转换为可以使用SelfHost框架的项目。 我对实际细节有点模糊,但我知道我可以在控制台窗口中运行自主服务器,然后在它上面运行服务。 我遇到的问题是我的项目是MVC项目而不是控制台项目。 我对控制台/ Windows应用程序的熟悉程度有限,因为我通常使用要在IIS中托管的项目。

我有点困惑的是我是否需要将我在Visual Studio中的现有Web API项目转换为新的控制台应用程序,或者是否有办法在解决方案中创建另一个控制台应用程序项目,该项目可以充当Web服务器Web API服务,或者更确切地说,如果有一种方法可以将一个带有Main()入口点的控制台元素添加到现有的MVC项目中(覆盖Global.asax入口点)。

搜索没有产生太多信息,可以帮助我填补这一知识空白。 希望有人能指出我正确的方向。 即使在很高的水平。

我最近不得不使用OWIN(在Visual Studio 2013上)将Web API项目转换为自托管服务。 我这样做如下:

(1)在项目的根目录下手动添加Program.cs和Startup.cs文件。 这两个文件包含如下所述的代码: http : //www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api 。

(2)去了Web API项目的属性。 在“应用程序”部分,我将“输出类型”称为“控制台应用程序”,并将“程序”类设置为“启动对象”。

虽然不是必需的,但我稍微修改了Program.Main()中的“using”块,如下所示:

// Start OWIN host using (WebApp.Start(url: baseAddress)) { // Create HttpCient and make a request to api/values HttpClient client = new HttpClient(); var response = client.GetAsync(baseAddress + "api/values").Result; if (response != null) { Console.WriteLine("Information from service: {0}", response.Content.ReadAsStringAsync().Result); } else { Console.WriteLine("ERROR: Impossible to connect to service"); } Console.WriteLine(); Console.WriteLine("Press ENTER to stop the server and close app..."); Console.ReadLine(); } 

最后,不是在Startup.Configuration()中多次调用config.Routes.MapHttpRoute(),而是可以引用您已经为Web API编写的路由:

 // Configure Web API for self-host. var config = new HttpConfiguration(); WebApiConfig.Register(config); app.UseWebApi(config);