我已经开始在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();
}
}
答案 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);
}