trn*_*son 23 c# asp.net iis asp.net-web-api owin
我正在尝试将现有的ASP.NET Web API项目(当前在IIS中托管)转换为可以使用SelfHost框架的项目.我对实际细节有点模糊,但我知道我可以在控制台窗口中运行自主服务器,然后在它上面运行服务.我遇到的问题是我的项目是MVC项目而不是控制台项目.我对控制台/ Windows应用程序的熟悉程度有限,因为我通常使用要在IIS中托管的项目.
我有点困惑的是我是否需要将Visual Studio中现有的Web API项目转换为新的控制台应用程序,或者是否有办法在解决方案中创建另一个控制台应用程序项目,该项目可以充当Web服务器Web API服务,或者更确切地说,是否有一种方法可以向现有MVC项目添加带有Main()入口点的控制台元素(覆盖Global.asax入口点).
搜索没有产生太多信息,可以帮助我填补这一知识空白.希望有人能指出我正确的方向.即使是在高水平.
Rub*_*ron 44
我最近不得不使用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项目的属性.在"Applications"部分,我将"Output Type"声明为"Console Application",并将"Program"类设置为"Startup object".
虽然不是必需的,但我稍微修改了Program.Main()中的"using"块,如下所示:
// Start OWIN host
using (WebApp.Start<Startup>(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();
}
Run Code Online (Sandbox Code Playgroud)
最后,不是在Startup.Configuration()中多次调用config.Routes.MapHttpRoute(),而是可以引用已经为Web API编写的路由:
// Configure Web API for self-host.
var config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseWebApi(config);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18408 次 |
| 最近记录: |