2016-08-31 66 views
2

我已經安裝了WebApi 2.2,IIS託管的Swashbuckle 5.4.0。我的基本swagger文檔沒有任何問題顯示,但是我指向的XML文檔中沒有任何內容正在UI內呈現,也沒有在JSON中可見。所以我看到的是沒有評論,總結等方法Swashbuckle 5.4.0和Xml文檔

我知道XML文檔已被找到,因爲我沒有得到任何錯誤(當我改變路徑到一個不存在的文件,錯誤出現),但由於某種原因,它只是不包括文件內的任何內容。我已經嘗試重新安裝Swashbuckle和WebApi的nuget包,我嘗試過生成和重新生成XML,甚至嘗試重新構建一個基本版本的XML來測試,但到目前爲止還沒有運氣。

有什麼想法可能會出現問題,或者我可以嘗試的任何建議?

下面的代碼片段:

控制器:

[RoutePrefix("rest/v1/helloworld")] 
public class HelloWorldController : ApiController 
{ 
    /// <summary> 
    /// Hello World 
    /// </summary> 
    /// <remarks>Hello World basic test</remarks> 
    /// <response code="401">Unauthorized</response> 
    [HttpGet] 
    [Route("")] 
    public HttpResponseMessage Get() 
    { 
     HttpActionContext aC = this.ActionContext; 

     return aC.Request.CreateResponse(HttpStatusCode.OK, "Hello World"); 
    }    

} 

XML文檔說明:

<?xml version="1.0"?> 
<doc> 
    <assembly> 
     <name>SwaggerApi</name> 
    </assembly> 
    <members> 
     <member name="M:HelloWorldController.Get"> 
      <summary>Hello World</summary> 
      <remarks>Hello World basic test</remarks> 
      <response code="401">Unauthorized</response> 
     </member> 
    </members> 
</doc> 

SwaggerConfig.cs片段:

EnableSwagger(c => 
{ 
    c.SingleApiVersion("v1", "ASP"); 
    c.IncludeXmlComments(string.Format(@"{0}\bin\SwaggerApi.xml",System.AppDomain.CurrentDomain.BaseDirectory)); 
}) 
+0

您的設置看起來與我的幾乎完全相同。我沒有看到你的唯一的事情是EnableSwaggerUi語句。不知道這是否會有問題? – MichaelDotKnox

+0

嗨邁克爾,我實際上切斷了EnableSwaggerUi語句前的片段,但它在那裏。不過謝謝你的建議。 – DiscordAndCookies

回答

3

找到了答案,排序的。命名空間正在執行,這意味着任何存在於命名空間之外的對象都將包含一個xpath,其中包含以開頭的方法名稱。 (例如M:.HelloWorldController.Get),而創建的xml具有成員名稱M:HelloWorldController.Get,因此找不到節點。這不僅會影響方法,還會影響參數,因此任何定義沒有命名空間的自定義對象也會導致無法找到該方法的成員節點。