2012-06-09 6 views
3

У меня есть проект webapi mvc4 rc и веб-приложение mvc4 rc, развернутое на сервере.Нет MediaTypeFormatter доступен для чтения после развертывания для prod

Локально все работает правильно, однако на сервере я получаю сообщение об ошибке

2012-06-09 03: 18: 18659 [23] INFO WebApplication.Controllers.AccountController - System.InvalidOperationException: Нет MediaTypeFormatter не доступен для чтения объекта типа «Бизнес» из содержимого с типом носителя '' undefined ''. на System.Net.Http.HttpContentExtensions.ReadAsAsync [T] (HttpContent содержания, типа типа, IEnumerable 1 formatters, IFormatterLogger formatterLogger) at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, IEnumerable 1 форматтеры) на WebApplication.Repository.BusinessRepository.GetByUserId (Guid USERID) в C: \ \ @ Кодекса WebApplication \ Repository \ BusinessRepository.cs: строка 37 в WebApplication.Controllers.AccountController.SignIn (модель LogOnModel, String returnUrl) в C: \ @ Code \ WebApplication \ Controllers \ AccountController.cs: строка 61 .

Мой код, который пытается вызвать сервис выглядит

var url = ApiRestHelper.ApiUrl(ApiEndPointConstants.GetBusinessByUserId, "userId", userId.ToString()); 
var service = ApiRestHelper.Get(url).Content; 
var data = service.ReadAsAsync<Business>().Result; 
HttpContext.Current.Session["BusinessInfo"] = data; 
return data; 

public static HttpResponseMessage Get(string apiMethod, string baseAddress) 
    { 
     var myHttpClient = new System.Net.Http.HttpClient 
     { 
      BaseAddress = new Uri(baseAddress) 
     }; 
     var get = myHttpClient.GetAsync(apiMethod); 
     var x = get.Result; 
     return x; 
    } 

Что я делаю не так?

+0

Установлен ли MVC4 на сервер, который вы развертываете? – Jesse

+0

Привет, Джесси, Да, у меня он установлен –

+0

Та же версия MVC4 как на сервере, так и на ПК разработки? Есть некоторые отличия в связующем устройстве модели, которые могут объяснить эту проблему. http://stackoverflow.com/questions/10934077/upgrading-to-mvc4-rc-no-mediatypeformatter-is-available-to-read-an-object-of-ty –

ответ

3

Это сообщение указывает, что вы пытаетесь десериализовать экземпляр Business из сообщения, которое не указывает заголовок Content-Type. В таком случае веб-API не знает, как десериализовать сообщение (он не знает, например, это xml или json). Вы уверены, что служба, вызываемая на сервере, возвращает правильно аннотированное сообщение? (вы можете проверить значение свойства service.Headers.ContentType).

+0

Я добавил thed MvcDaiagnostics, и эта же версия работает на сервисе. @marcind Я думаю, что вы на что-то, я добавил журнал, чтобы узнать, что такое значение и его отображение. System.InvalidOperationException: No MediaTypeFormatter доступен для чтения объекта типа «Бизнес» из контента с типом носителя «undefined». –

+0

System.Net.Http.HttpClient не позволяет мне устанавливать тип носителя, поэтому я немного потерял его, когда мне нужно его применить. Я попытался использовать [FromUri] и [FromBody], однако ни один из них не помог –

+0

на моем localmachine. Я получаю приложение/json, однако данные, которые возвращаются с prod-сервера, это text/html. Почему это произойдет? –

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