2015-05-30 15 views
11

Tôi có một lớp tên là Quảng cáo:Không MediaTypeFormatter có sẵn để đọc một đối tượng kiểu 'Quảng cáo' trong asp.net api web

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

và trong điều khiển của tôi:

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()); 
    } 

nhưng khi tôi kiểm tra nó với Postman tôi gặp phải lỗi này,

"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 có thể giúp tôi không?

+0

Từ lỗi tôi vẻ như bạn không có Content-Type tiêu đề? Thêm Tiêu đề nội dung thích hợp trong cuộc gọi Người đưa thư của bạn và điều đó sẽ khắc phục được. –

+0

Tôi có 'Content-Type' và' Accept' trong tiêu đề của tôi @DaveAgaba –

+0

Kiểm tra câu trả lời của tôi bên dưới. –

Trả lời

2

"ExceptionMessage": "Không MediaTypeFormatter có sẵn để đọc một đối tượng kiểu 'Quảng cáo' từ nội dung với loại phương tiện 'application/octet-stream",

Điều đó có nghĩa rằng ứng dụng của bạn không thể đọc Loại nội dung octet-stream - đó là yêu cầu được cung cấp. Đây là một sự thất vọng mà tôi có với API Web. Tuy nhiên có một cách xung quanh nó. Cách dễ dàng là sửa đổi kiểu Nội dung thành 'application/json' hoặc 'application/xml' dễ đọc. Cách khó hơn là cung cấp MediaTypeFormatter của riêng bạn.

+0

Liên kết hướng dẫn 'này' hiện đã chết. – NStuke

25

Trong WebApiConfig.cs bạn thêm bên này đăng ký

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

Điều này không hoạt động. config.Formatters.JsonFormatter.CanWriteType (typeof (MyModel)); trả về false. – JDC

Các vấn đề liên quan