asp.net-core - OData 和 .NET Core 2 Web API - 禁用区分大小写?

标签 asp.net-core odata asp.net-core-webapi

我是 OData 新手,我正在尝试使用 Microsoft.AspNetCore.OData 7.0.0-beta1 将其集成到我们的 .NET Core 2.0 Web API 中NuGet 包。我希望我的 OData URL 不区分大小写(即 http://localhost:1234/odata/productshttp://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/

相关文章:

odata - Breeze WebAPI : How to combine QueryResult with ODataQueryOptions to return inlineCount

c# - 根据时间戳对对象列表进行分组

c# - ImageSharp 在 Core 2.2 中的图像上绘制形状

asp.net - User.GetUserId() 在 Controller 的构造函数内失败

c# - Chart.JS 标签字符串不能接受 ViewBag 数据

c# - 如何从 ASP.NET Core RC2 Web Api 返回 HTTP 500?

odata - OData 和存储库模式中的 IEnumerable 与 IQueryable

asp.net-mvc-2 - ASP.NET MVC 的 OData 实现

mongodb - 使用 Mongodb 的 .Net Core Web Api 身份验证

c# - 将 Ocelot 16.0 与 ASP.Net Core 3.1 集成无法正常工作,因为我需要将 Swagger 与 Ocelot 一起使用