asp.net-core - 不能将“Microsoft.AspNet.OData.Routing.ODataRoute”与端点路由一起使用。ASP Net Core 2.2 的异常
问题描述
ASP NET Web API项目框架升级到Core 2.2版本后,OData路由配置失败。它抛出“不能将'Microsoft.AspNet.OData.Routing.ODataRoute'与端点路由一起使用。” 例外。
链接https://github.com/Microsoft/aspnet-api-versioning/issues/361显示了如何避免异常但禁用新的 Core 2.2 路由模型。您能告诉我如何在不停用此功能的情况下解决问题吗?
public IServiceProvider ConfigureServices(IServiceCollection services)
{
...
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2).AddControllersAsServices();
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
app.UseMvc(b =>
{
b.Select().Expand().Filter().OrderBy().MaxTop(100).Count();
b.MapODataServiceRoute("odata", "odata", ODataConfig.GetEdmModel());
});
}
解决方案
升级到 .net core 2.2 后我遇到了同样的问题,发现 .net core 2.2 默认启用了端点路由,并且他们具有向后禁用它的能力。它对我有用。
services.AddMvc(options =>
{
options.EnableEndpointRouting = false;
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2));
推荐阅读
- javascript - 带有 Cron 的 HTML2Canvas
- javascript - 需要帮助将小数添加到 yaxis 值
- angular - 发布到生产环境后,使用 Angular 发布到 WebAPI 不起作用
- arrays - 在matlab中复制scipy rankdata
- angular - 如何在角度 5 中用 plus(+) url 替换空格?
- kotlin - Kotlin 代码是如何编译成原生代码的?
- c# - 另一个 ViewModel 的属性不会改变
- python - 使用 setattr 设置的属性与 Python (Django) 中的给定值类型不同
- arrays - 如何根据两个不同的列对表进行排序(通过过滤器)?
- spring - 在 spring 中从原始状态机获取分叉状态机的参考