用的WebAPI请求格式异常(Exceptions with WebAPI Request Form

2019-09-21 07:08发布

在一个项目中使用MVC4的WebAPI的RC版,我一直遇到的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,我得到完全相同的问题。

Answer 1:

在这里添加这一点,因为其他人可能会发现它很有用。

我用的是的WebAPI组件的版本是4.0.20505.x,在那里我肯定有问题。

昨天,新版本被张贴在的NuGet,版本4.0.20710.0,现在与代码工作上面完美无缺。



文章来源: Exceptions with WebAPI Request Formatting