2015-12-16 48 views
0

我們正在嘗試從傳統的基於WCF SOAP的服務切換爲我們的產品開始編寫WebApi服務。我們面臨的挑戰是如何提供api文檔。我遇到了SwaggerUi /斜扣。 我們的一個限制是我們不想在IIS中託管WebApi服務,而是在Windows服務中託管。我是Web API的新手,所以我可能會以錯誤的方式做事。Web Api文檔與swashbuckle

因此,爲了測試,我在控制檯應用程序中託管web api。我可以使用HttpClient來調用Web Api上的Get方法,但如果我在Web瀏覽器中鍵入url(這對於自託管Web API是否正常?),我無法訪問它。

因此,我安裝了Swashbuckle.core nuget包,並將下列代碼包含在Startup類(Owin selfhosted)中。

var config = new HttpConfiguration(); 

     config 
      .EnableSwagger(c => 
      { 
       c.IncludeXmlComments(GetXmlCommentsPath()); 
       c.SingleApiVersion("v1", "WebApi"); 
       c.ResolveConflictingActions(x => x.First()); 
      }) 
      .EnableSwaggerUi(); 

private static string GetXmlCommentsPath() 
    { 
     var path = [email protected]"{AppDomain.CurrentDomain.BaseDirectory}\WebApiHost.XML"; 

     return path; 
    } 

當我瀏覽到以下位置 http://localhost:5000/swagger/ui/index 我收到「頁面無法顯示」的IE瀏覽器。類似的鉻。 在控制檯/ windows服務應用程序中託管WebApi以自動獲取文檔時是否需要執行任何特殊操作?

(我已經啓用了該項目的xml文檔)

現在我附上一個測試項目。請點擊以下鏈接:

Test project

問候,

納斯

回答

1

你的問題不在於Swashbuckle,這是正確的配置。相反,事實上,在瀏覽器導航到swagger URI時,您的OWin Web應用已關閉。您的使用聲明意味着該網頁應用程序在其結尾處關閉 - 遠在Chrome打開並導航到易怒的路徑之前。您需要確保Web應用程序仍在運行 - 那麼您的路徑將是有效的(儘管在源代碼中,您的url變量中有不同的端口9000和5000)。

+0

非常感謝您指出這一點,我不相信我沒有注意到這麼基本的東西。它現在工作:) – Nasir