zl程序教程

您现在的位置是:首页 >  其他

当前栏目

将Web API转换为使用自托管

2023-04-18 12:52:04 时间

我想将现有的ASP.NET Web API项目(当前在IIS中托管)转换为可以使用SelfHost框架的项目。我在实际的细节上有些模糊,但明白我可以在控制台窗口中运行自主服务器,然后在其上运行服务。我遇到的问题是我的项目是一个MVC项目,而不是控制台。我对控制台/ Windows应用程序的熟悉程度有限,因为我通常与在IIS中托管的项目一起工作。将Web API转换为使用自托管

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

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

trnelson

下面是一些例子http://stackoverflow.com/questions/12899360/getting-a-post-endpoint-to -work-in-self-hosted-webservicehost -c-sharp-webservi,http://stackoverflow.com/questions/13165533/deserialize -json-object-sent-from-android-app-to-wcf-webservice from my previous answers。 –

@ L.B谢谢你的评论,但除非我错过了一些东西,我不太明白这是如何回答这个问题的。 –

trnelson,这两个答案都显示*自包含* RestFul服务的客户端和服务器代码。如果你没有找到有用的,请忽略我的评论。 –

回答

我最近必须使用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()来查找如下:

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

最后,而不是内启动调用config.Routes.MapHttpRoute()多次.Configuration(),你可以参考你已经写了Web API的路线:

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

将Web API转换为使用自托管