2015-05-30 2 views
11

У меня есть класс, который зовут Реклама:Нет MediaTypeFormatter доступен для чтения объект типа «Реклама» в asp.net Web API

public class Advertisement 
{ 
    public string Title { get; set; } 
    public string Desc { get; set; } 
} 

и в моем контроллере:

public class OrderController : ApiController 
{ 
    public UserManager<IdentityUser> UserManager { get; private set; } 

    // Post api/Order/Test 

    [Route("Test")] 
    public IHttpActionResult Test(Advertisement advertisement) 
    { 
     var currentUser = User.Identity.GetUserId(); 
     Task<IdentityUser> user = UserManager.FindByIdAsync(currentUser); 

     return Ok(User.Identity.GetUserId()); 
    } 

но когда я тестирую его с Postman, я сталкиваюсь с этой ошибкой,

"Message": "The request contains an entity body but no Content-Type header. The inferred media type 'application/octet-stream' is not supported for this resource.", 
"ExceptionMessage": "No MediaTypeFormatter is available to read an object of type 'Advertisement' from content with media type 'application/octet-stream'.", 
"ExceptionType": "System.Net.Http.UnsupportedMediaTypeException", 
"StackTrace": " at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n at System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)" 

Может ли AnyBody помочь мне?

+0

Из ошибки появляется я, что у вас нет заголовка Content-Type? Добавьте соответствующий заголовок Content-Type в свой почтовый вызов, и он должен его исправить. –

+0

У меня есть 'Content-Type' и' Accept' в моих заголовках @DaveAgaba –

+0

Посмотрите мой ответ ниже. –

ответ

2

«ExceptionMessage»: «Нет MediaTypeFormatter доступен для чтения объект типа„Реклама“от контента с медиа типа приложения/октет-поток»,

Это означает, что ваше приложение не может читать октет-поток Content-Type - это то, что предоставил запрос. Это одно разочарование, которое у меня есть с веб-API. Однако есть способ обойти это. Легкий способ - изменить Content-type на «application/json» или «application/xml», который легко прочитать. Более сложным способом является предоставление собственного MediaTypeFormatter.

+0

Ссылка 'this' tutorial теперь мертва. – NStuke

25

В вашем WebApiConfig.cs добавить внутри регистра

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/octet-stream")); 
+0

Это не работает. config.Formatters.JsonFormatter.CanWriteType (typeof (MyModel)); возвращает false. – JDC

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