【发布时间】:2018-05-10 02:04:14
【问题描述】:
我正在尝试为我的 .Netcore 应用程序 (1.1) 配置 swagger,但无法生成文档。
这是我的配置
public void ConfigureServices(IServiceCollection services) {
services.AddMvcCore().AddVersionedApiExplorer(o => o.GroupNameFormat = "1.0");
services.AddMvc();
services.AddApiVersioning(opt =>
{
opt.ApiVersionReader = new HeaderApiVersionReader("api-version");
opt.DefaultApiVersion = new ApiVersion(1, 0);
opt.ReportApiVersions = true;
opt.AssumeDefaultVersionWhenUnspecified = true;
});
services.AddSwaggerGen(
options =>
{
options.SwaggerDoc("1.0",new Info {Contact = new Contact() {Name="Admin" } });
// add a custom operation filter which sets default values
options.OperationFilter<SwaggerDefaultValues>();
});
}
在配置方法中
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=User}/{action=Get}/{requestString?}");
});
app.UseSwagger(o=>
{
o.RouteTemplate = "docs/{documentName}/swagger.json";
});
app.UseSwaggerUI(
options =>
{
options.SwaggerEndpoint("/docs/1.0/swagger.json", "1.0");
});
当我运行应用程序时,
http://localhost:5000/docs/1.0/swagger.json
我得到以下方法,没有发现我的 API。
{"swagger":"2.0","info":{"contact":{"name":"Admin"}},"basePath":"/","paths":{},"definitions":{},"securityDefinitions":{}}
【问题讨论】:
-
1.您是否使用相同的SwaggerDefaultValues 过滤器?如果没有,请分享。
-
@Set,我按照这个示例来设置 swagger github.com/Microsoft/aspnet-api-versioning/blob/master/samples/… 我已经设置了 SwaggerDefaultValues 过滤器。
-
我确实评论了 addMvc 并将我的代码配置为使用 addMVCCore ,但我仍然有同样的问题
services.AddMvcCore(). AddControllersAsServices(). AddJsonFormatters(). AddJsonOptions(opt=> { if (opt.SerializerSettings.ContractResolver != null) { opt.SerializerSettings.ContractResolver = new DefaultContractResolver(); } }). AddVersionedApiExplorer(o => o.GroupNameFormat = "1.0"); -
关于同时使用
AddMvcCore和AddMVC我错了。请参阅Swagger sample. Why MVC services are registered twice?中的答案
标签: asp.net-core swagger swashbuckle