我是 OData 新手,我正在尝试使用 Microsoft.AspNetCore.OData 7.0.0-beta1 将其集成到我们的 .NET Core 2.0 Web API 中NuGet 包。我希望我的 OData URL 不区分大小写(即 http://localhost:1234/odata/products 与 http://localhost:1234/odata/Products 相同)。我怎样才能做到这一点?我的启动代码的相关部分如下:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime appLifetime)
{
// ...
var odataBuilder = new ODataConventionModelBuilder(app.ApplicationServices);
odataBuilder.EntitySet<Product>("products");
app.UseMvc(routeBuilder =>
{
routeBuilder.MapODataServiceRoute("ODataRoute", "odata", odataBuilder.GetEdmModel());
// Workaround for https://github.com/OData/WebApi/issues/1175.
routeBuilder.EnableDependencyInjection();
});
// ...
}
最佳答案
这是我自己想出来的。您可以引用https://github.com/OData/WebApi/issues/812 .
总而言之,您需要首先将这样的类添加到您的项目中:
public class CaseInsensitiveResolver : ODataUriResolver
{
private bool _enableCaseInsensitive;
public override bool EnableCaseInsensitive
{
get => true;
set => _enableCaseInsensitive = value;
}
}
然后您必须以稍微不同的方式创建服务路由:
routeBuilder.MapODataServiceRoute("ODataRoute", "odata",
b => b.AddService(ServiceLifetime.Singleton, sp => odataBuilder.GetEdmModel())
.AddService<ODataUriResolver>(ServiceLifetime.Singleton, sp => new CaseInsensitiveResolver()));
这解决了我周一的情况。
关于asp.net-core - OData 和 .NET Core 2 Web API - 禁用区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48347919/