2015-07-23 2 views
1

С ниже код, я могу ударить (с помощью Fiddler):OData, метод получить с ключом не найден

  • GetCustomers через GET: OData/Клиенты
  • Post (CustomerModel клиент) через POST: OData/Клиенты
  • удаление с помощью DELETE: OData/Customers (5)

Функция удаления метод выглядит следующим образом:

public IHttpActionResult Delete([FromODataUri] int key) 
{ 
    Console.WriteLine(key); 
} 

Я ударил метод, и я получил ключ, без проблем.

Но я не попал метод GET с ключом (без проблем с помощью метода GET без ключа, я получаю полный список):

Я получаю эту ошибку (заголовки ответа с помощью Fiddler): HTTP/1.1 404 Not Found

WebApiConfig является:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     ODataModelBuilder builder = new ODataConventionModelBuilder(); 
     builder.EntitySet<CustomerModel>("Customers"); 
     builder.EntitySet<EmployeeModel>("Employees"); 
     config.MapODataServiceRoute(
      routeName: "ODataRoute", 
      routePrefix: "odata", 
      model: builder.GetEdmModel()); 
    } 
} 
+0

Можете ли вы попробовать вызвать метод GetCustomers ([FromODataUri] int key)? – TomDoesCode

+0

Я пробовал, тот же результат .. не нашел. –

+1

Как насчет Get ([FromODataUri] int key)? – TomDoesCode

ответ

1

метод требует имя чтобы Получить быть подобран маршрутизации OData:

Get([FromODataUri] int key) 
0

По Web API OData конвенции, она должна поддерживать следующие два правила:

  1. HttpMethodName + entityTypeName
  2. HttpMethodName

Конвенция №1 имеет высокий приоритет, чем конвенция № 2.

На основе конвенций, вы получите 404-NotFound, если вы только определить следующие действия в контроллере:

GetCustomer([FromODataUri] int key) 
GetCustomers([FromODataUri] int key) 

В противном случае, он должен работать, если определить по крайней мере одно из следующих действий в контроллере:

GetCustomerModel([FromODataUri] int key) 
Get([FromODataUri] int key) 

http://odata.github.io/WebApi/#03-02-built-in-routing-conventions списки конвенций маршрутизации, используемых в Web-API OData. Надеюсь, это может вам помочь. Благодарю.

Смежные вопросы