Я выполнил этот урок, чтобы создать службу RAP WebAPI.
После этого я могу загрузить список всех контактов, указав http://baseaddress/api/Contacts
.
Затем я добавил следующий код в методе Register
в WebApiConfig.cs, чтобы включить конечную точку OData:
config.Count().Filter().OrderBy().Expand().Select().MaxTop(null);
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Contact>("Contacts");
config.MapODataServiceRoute(
routeName: "OData",
routePrefix: "odata",
model: builder.GetEdmModel());
Также добавлен параметр [EnableQuery]
в Contact.GetContacts()
. Таким образом, я могу запросить конкретные контакты следующим образом:
http://baseaddress/odata/Contacts?$filter=startswith(Name,'A')
и это работает как шарм.
К сожалению, когда я помещаю [EnableQuery]
, конечная точка WebAPI перестает работать, показывая следующую ошибку:
No non-OData HTTP route registered.
in System.Web.OData.Extensions.HttpConfigurationExtensions.GetNonODataRootContainer(HttpConfiguration configuration)
in System.Web.OData.Extensions.HttpRequestMessageExtensions.GetRootContainer(HttpRequestMessage request, String routeName)
in System.Web.OData.Extensions.HttpRequestMessageExtensions.CreateRequestScope(HttpRequestMessage request, String routeName)
in System.Web.OData.Extensions.HttpRequestMessageExtensions.CreateRequestContainer(HttpRequestMessage request, String routeName)
...
Что мне делать, чтобы это исправить?