在架构定义中找不到类型名称

时间:2017-03-15 18:08:01

标签: c# asp.net-web-api swagger swashbuckle

我已经开始在Web API中使用Swashbuckle。在我的Swagger UI中,我的所有类型都没有正确呈现。在每种方法中,我都会看到类似这样的东西(未渲染):

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

所以我进行了调查,并在我的Swagger定义文件中找到了我的许多方法:

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

2 个答案:

答案 0 :(得分:1)

我几乎意外地弄清楚了。由于我还不明白的原因,我需要让我的类型名称以小写字母开头,而其他人似乎没有。

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

答案 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