2017-03-15 64 views
5

我已經開始在Web API中使用Swashbuckle。我的Swagger用戶界面中沒有任何類型的對象正確呈現。在每一個方法,我看到這樣的事情(未着色):在架構定義中找不到類型名稱

<span class="strong">Typename is not defined!</span> 

所以我調查,發現這在我揚鞭定義文件對於很多方法:

{$ref: "#/definitions/Typename", vendorExtensions: {}} 

typeName存在於定義上市......但其較低的情況。它們都是較低的,但所有的$ref都是大寫。

我該如何解決這個問題?

賞金編輯:更多信息可應要求提供,我只是不確定還有什麼可能是相關的。

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(SwaggerConfig), "Register")] 

public class SwaggerConfig 
{ 
    public static void Register() 
    { 
     var thisAssembly = typeof(SwaggerConfig).Assembly; 

     GlobalConfiguration.Configuration 
      .EnableSwagger(c => 
       { 
        c.SingleApiVersion("v1", "MyNamespace.Api"); 
        c.IncludeXmlComments(Path.Combine(
         AppDomain.CurrentDomain.GetDataDirectoryPath(), 
         "MyNamespace.Api.XML")); 

       }) 
      .EnableSwaggerUi(); 
    } 
} 
+0

你能粘貼你的Swagger配置嗎? –

+0

@ThiagoCustodio已更新 – Amy

回答

1

我意外了它差不多。由於我還不明白的原因,我需要讓我的類型名稱以小寫字母開頭,當沒有其他人看起來。

c.SchemaId(type => 
{ 
    var name = type.Name; 
    name = $"{ name.Substring(0,1).ToLower() }{ name.Substring(1) }"; 
}); 
0

檢查您的項目設置。聽起來像你的道路可能是錯的。以下是我使用的設置。

...swaggerDocsConfig.IncludeXmlComments(GetXmlCommentsPath()); 

/// <summary> 
/// This is where the generated XML meta documentation are stored. 
/// Editable in project settings 
/// </summary> 
private static string GetXmlCommentsPath() 
{ 
    return string.Format(@"{0}\bin\MrGreen.Game.Service.XML", AppDomain.CurrentDomain.BaseDirectory); 
} 

enter image description here

+0

我認爲XML評論工作正常。我的方法在Swagger UI中用它們的描述進行註釋。 – Amy

+0

@艾米:我第二@Jocke。你試過這個建議嗎?在你的問題中,你顯示_c.IncludeXmlComments(「MyNamespace.Api.XML」)_ =>因此你不指定一個路徑...我們使用以下結構(類似於@Jocke):_String.Format(@「{0 } \ bin \ {1} .XML「,AppDomain.CurrentDomain.BaseDirectory,typeof(SwaggerConfig).Namespace); _ – AardVark71

+0

XML註釋工作正常。我正確地生成文件名,但省略了我的代碼部分以簡化問題。我將編輯我的實際代碼,但我向你保證,這部分工作正常。 – Amy

相關問題