部署到prod后,无法读取MediaTypeFormatter

时间:2012-06-09 03:23:15

标签: c# asp.net-mvc asp.net-web-api

我在服务器上部署了一个webapi项目mvc4 rc和一个mvc4 rc Web应用程序。

本地一切正常但是在服务器上我收到错误

  

2012-06-09 03:18:18,659 [23] INFO WebApplication.Controllers.AccountController - System.InvalidOperationException:没有MediaTypeFormatter可用于从媒体类型为“未定义”的内容中读取“商家”类型的对象。      在System.Net.Http.HttpContentExtensions.ReadAsAsync [T](HttpContent内容,类型类型,IEnumerable 1 formatters, IFormatterLogger formatterLogger) at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, IEnumerable 1格式化程序)      在C:\ @ Code \ WebApplication \ Repository \ BusinessRepository.cs中的WebApplication.Repository.BusinessRepository.GetByUserId(Guid userId):第37行      at WebApplication.Controllers.AccountController.SignIn(LogOnModel model,String returnUrl)in 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;
    }

我做错了什么?

1 个答案:

答案 0 :(得分:3)

此消息表明您正在尝试从未指定Business标头的邮件中反序列化Content-Type的实例。在这种情况下,Web API不知道如何反序列化消息(例如,它不知道它是xml还是json)。您确定在服务器上调用的服务是否返回了正确注释的消息? (您可以检查service.Headers.ContentType属性的值)。