Podążyłem za samouczkiem this, aby utworzyć usługę REST WebAPI.Nie zarejestrowano trasy HTTP innej niż OD
Następnie mogę załadować listę wszystkich kontaktów, wskazując na http://baseaddress/api/Contacts
.
Potem dodaje następujący kod w metodzie in WebApiConfig.cs Register
w celu umożliwienia końcowy 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());
I również dodać parametr [EnableQuery]
na metodzie Contact.GetContacts()
. W ten sposób, jestem w stanie do kwerendy dla poszczególnych kontaktów, takich jak ten:
http://baseaddress/odata/Contacts?$filter=startswith(Name,'A')
i działa jak czar.
Niestety, kiedy kładę [EnableQuery]
, punkt końcowy WebAPI przestaje działać, pokazując zamiast następujący błąd:
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)
...
Co należy zrobić, aby rozwiązać ten problem?
Czy była na to jakaś odpowiedź? Znam ten sam problem. –
@MichaelBowman Niestety nie – Teejay