Web API请求格式的例外情况

时间:2012-08-16 13:17:30

标签: asp.net-mvc-4 asp.net-web-api restsharp

在项目中使用RCC版本的MVC4 WebAPI,我在API服务器端遇到以下错误:

System.FormatException: The format of value 'application/json; charset=utf-8' is invalid.

我已经尝试过如何从客户端调用它,现在使用RestSharp,如下所示:

     var client = new RestClient("http://localhost:29874");
     var request = new RestRequest("api/submit", Method.POST);
     var content = new RestSharp.Serializers.JsonSerializer().Serialize(myDto);
     request.RequestFormat = DataFormat.Json;
     request.AddBody(content);
     var restResponse = client.Execute(request);
     var response = restResponse.Content;

服务器端的ApiController名为SubmitController。 SubmitController看起来像:

public class SubmitController : ApiController
{
    public SubmitResponse Post(SomeDtoType dto)
    {
        var response = new SubmitResponse();
        // do something interesting with the dto;

        return response;
    }
}

当然,永远不会调用控制器方法,因为我得到了之前的格式化异常,我从服务器上的Global.asax中捕获了Application_Error():

  protected void Application_Error()
    {
        var ex = Server.GetLastError();
        if (ex != null)
        {
            if (ex is HttpUnhandledException)
            {
                ex = ex.InnerException;
            }

            logger.Error("Unhandled error.  ", ex);
        }
    }

我没有为WebAPI服务器代码定义任何自定义格式化程序。我错过了什么?

编辑:有些事情非常严重,因为当我换成XML而不是JSON时,我会遇到完全相同的问题。

1 个答案:

答案 0 :(得分:3)

在此处添加此内容,因为其他人可能会觉得它很有用。

我使用的WebAPI组件版本是4.0.20505.x,我当然遇到了问题。

昨天,新版本发布在NuGet版本4.0.20710.0上,现在可以完美地使用上面的代码。