Ayu*_*rma 7 odata swashbuckle asp.net-core
我试图在asp.net核心中同时实现(swagger和odata),但是它不起作用。
我无法集成给odata的路由。
我具有以下配置,并且收到一般错误。

这是错误

Kiz*_*mar 11
将OData添加到.Net Core项目时,我们遇到了同样的问题。这篇文章的代码片段中显示的变通办法解决了Swagger UI加载时我们的API错误。
据我所知,Swashbuckle for AspNetCore不支持OData。因此,在上面的链接中添加了变通方法代码之后,我们的Swagger UI可以运行,但是没有OData端点显示。
链接中的代码段:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddOData();
// Workaround: https://github.com/OData/WebApi/issues/1177
services.AddMvcCore(options =>
{
foreach (var outputFormatter in options.OutputFormatters.OfType<ODataOutputFormatter>().Where(_ => _.SupportedMediaTypes.Count == 0))
{
outputFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/prs.odatatestxx-odata"));
}
foreach (var inputFormatter in options.InputFormatters.OfType<ODataInputFormatter>().Where(_ => _.SupportedMediaTypes.Count == 0))
{
inputFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/prs.odatatestxx-odata"));
}
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
var builder = new ODataConventionModelBuilder(app.ApplicationServices);
builder.EntitySet<Product>("Products");
app.UseMvc(routebuilder =>
{
routebuilder.MapODataServiceRoute("ODataRoute", "odata", builder.GetEdmModel());
// Workaround: https://github.com/OData/WebApi/issues/1175
routes.EnableDependencyInjection();
});
}
}
Run Code Online (Sandbox Code Playgroud)
我能够使用 DocumentFilter 做到这一点。创建一个类似于下面示例的类,然后将其添加到您的 Swagger 配置中:
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new Info { Title = "Your title API v1.0", Version = "v1.0" });
options.DocumentFilter<CustomDocumentFilter>();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6951 次 |
| 最近记录: |