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

Cannot find type name in schema definitions

我已经开始在 Web 中使用 Swashbuckle API。 None 我的类型在我的 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();
    }
}

检查您的项目设置。听起来你的路径可能是错误的。以下是我使用的设置。

...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);
}

我几乎是偶然发现的。由于我还不明白的原因,我需要让我的类型名称以小写字母开头,而其他人似乎没有。

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