2016-01-08 44 views
0

每次使用Fiddler發出POST請求時,都會引發UnsupportedMediaTypeException。我錯過了什麼嗎?406在C#Web API中調用POST方法時的HTTP響應

控制器:

[Route("api/contacts")] 
    public IHttpActionResult Post([FromBody]ContactDTO contact) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     //Other operations 

     return Created(contact); 
    } 

WebApiConfig.cs

public static void Register(HttpConfiguration config) 
    { 
     // Web API configuration and services 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     config.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 

     config.Formatters.JsonFormatter.SupportedMediaTypes.Add(
      new MediaTypeHeaderValue("application/json")); 

     var json = config.Formatters.JsonFormatter; 
     json.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented; 
     json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

    } 

Fiddler request

+0

首先嚐試使用默認設置並查看它是否仍然有效。如果它試圖縮小哪一行是罪魁禍首。我懷疑清除支持媒體類型是問題的根源。 – Nkosi

+0

你在動作上使用[HttpPostAttribute]嗎? – Nkosi

+0

你發送了什麼請求?顯示您的完整請求。 –

回答

0

進一步看起來有點爲我的代碼後,我發現了一些。我的控制器類是從ODataController繼承。我只是將繼承改爲ApiController,現在一切正常。