【发布时间】:2019-12-18 16:27:15
【问题描述】:
我在我的 WebApi 中添加了一个 OData v4,它运行良好。我遵循了这个指示:https://docs.microsoft.com/en-us/odata/webapi/getting-started
但是,我注意到,我需要不区分大小写。我在 C# 中找到了解决方案:OData and .NET Core 2 Web API - disable case-sensitivity?
但不知何故,它对我不起作用。当我尝试它时,它说:
未找到与请求 URI '[my url]' 匹配的 HTTP 资源。
注册有效的方法:
Public Shared Sub Register(ByVal config As HttpConfiguration)
builder = New ODataConventionModelBuilder()
builder.EntitySet(Of vw_CompanyPerson)("profiles")
config.MapODataServiceRoute("odata", "odata", builder.GetEdmModel())
config.Select().Expand().Filter().OrderBy().MaxTop(Nothing).Count()
End Sub
这是我的代码:
Imports System.Web.Http
Imports Guestline.RezLynx.Persistence
Imports Microsoft.AspNet.OData.Builder
Imports Microsoft.AspNet.OData.Extensions
Imports Microsoft.OData
Imports Microsoft.OData.UriParser
Public Class WebApiConfig
Private Shared Property builder() As ODataModelBuilder
Public Shared Sub Register(ByVal config As HttpConfiguration)
builder = New ODataConventionModelBuilder()
builder.EntitySet(Of vw_CompanyPerson)("profiles")
config.MapODataServiceRoute(
"odata",
"odata",
New Action(Of IContainerBuilder)(AddressOf ModifyContainer))
config.Select().Expand().Filter().OrderBy().MaxTop(Nothing).Count()
End Sub
Private Shared Sub ModifyContainer(obj As IContainerBuilder)
obj.AddService(ServiceLifetime.Singleton, New Func(Of IServiceProvider, ODataUriResolver)(AddressOf CreateUriResolver))
obj.AddService(ServiceLifetime.Singleton, New Func(Of IServiceProvider, Edm.IEdmModel)(AddressOf GetEdmModel))
End Sub
Private Shared Function GetEdmModel(arg As IServiceProvider) As Edm.IEdmModel
Return builder.GetEdmModel()
End Function
Private Shared Function CreateUriResolver(arg As IServiceProvider) As ODataUriResolver
Return New CaseInsensitiveUriResolver()
End Function
End Class
还有:
Imports Microsoft.OData.UriParser
Public Class CaseInsensitiveUriResolver
Inherits ODataUriResolver
Public Overrides Property EnableCaseInsensitive As Boolean
Get
Return True
End Get
Set(value As Boolean)
End Set
End Property
End Class
【问题讨论】: