2016-12-09 2 views
0

Я пытаюсь настроить веб-API C#, который использует OData 4. Я создал OdataController и считаю, что я правильно направил его в WebApiConfig. Я помещаю отладчик в каждую функцию контроллера, чтобы узнать, входит ли запрос в метод (ы). Когда я нахожу GET http://localhost:10013/odata/Call, отладчик в первом методе хитов, но как только я позволяю отладчику двигаться по запросу сбой. В Chrome я вижу, что запрос возвращается с «406 Not Acceptable», но ничего нет на вкладках предварительного просмотра или ответа. Что я делаю не так? Я вижу, что запрос входит в контроллер правильно, но почему он не возвращает строку «вызов», а также отправляет 406?Все запросы OData на C# WebAPI сбой

Во-вторых, если я отправлю запрос http://localhost:10013/odata/Call(0), первый метод в контроллере попадет не во второй (желаемый) или даже третий. Что я делаю неправильно здесь, если я хочу, чтобы он ударил по второму или третьему методу?

Я включил контроллер и WebApiConfig, которые я использую.

namespace JamesMadison 
{ 
    public static class Call 
    { 
    } 
} 

using System.Web.Http.OData; 

namespace JamesMadison.Controllers 
{ 
    public class CallController : ODataController 
    { 
     public string GetCall() 
     { 
      return "call"; 
     } 

     public string GetCall([FromODataUri] int id) 
     { 
      return "call"; 
     } 

     public string GetCall([FromODataUri] string key) 
     { 
      return "call"; 
     } 
    } 
} 

using System.Web.Http; 
using System.Web.OData.Builder; 
using System.Web.OData.Extensions; 

namespace JamesMadison 
{ 
    public static class WebApiConfig 
    { 
     public static void Register(HttpConfiguration config) 
     { 
      config.MapODataServiceRoute("odata", "odata", model: GetModel());  
     } 

     public static Microsoft.OData.Edm.IEdmModel GetModel() 
     { 
      ODataModelBuilder builder = new ODataConventionModelBuilder(); 
      builder.EntitySet<Call>("Call"); 

      return builder.GetEdmModel(); 
     } 
    } 
} 
+0

Как вы генерировать ваш запрос? [406] (http://stackoverflow.com/questions/14251851/what-is-406-not-acceptable-response-in-http) предполагает, что вы пропускаете заголовки. Вы видели ответы [здесь] (http://stackoverflow.com/questions/29975653/odatacontroller-returning-http-406-not-acceptable) и [здесь] (http://stackoverflow.com/questions/26676879/webapi и-odatacontroller-возврата-406-не-приемлемо)? – Jasen

ответ

0

В контроллере я имел using System.Web.Http.OData; и заменил его using System.Web.OData;

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