簡體   English   中英

轉換 Web API 以使用自托管

[英]Convert Web API to use Self Hosting

我正在嘗試將現有的 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<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();
} 

最后,您可以參考您已經為 Web API 編寫的路由,而不是在Startup.Configuration()多次調用config.Routes.MapHttpRoute()

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM