Я добавил OData v4 в свой WebApi, и он отлично работает. Я следовал этой инструкции: https://docs.microsoft.com/en-us/odata/webapi/getting-started
Однако я заметил, что мне нужна нечувствительность к регистру. Я нашел решение в C #: OData и .NET Core 2 Web API - отключить чувствительность к регистру?
Но как-то оно у меня не работает. Когда я пытаюсь это сделать, он говорит:
Не найден ресурс HTTP, соответствующий URI запроса '[my url]'.
Метод регистрации, который работает:
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