3

プロジェクトで 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 サーバー コード用に定義されたカスタム フォーマッタはありません。私は何が欠けていますか?

編集: JSONの代わりにXMLに交換すると、まったく同じ問題が発生するため、何かが深刻に間違っています。

4

1 に答える 1

3

他の人が便利だと思うかもしれないので、ここに追加します。

私が使用していた WebAPI コンポーネントのバージョンは 4.0.20505.x で、これには間違いなく問題がありました。

昨日、新しいバージョンが NuGet バージョン 4.0.20710.0 に投稿され、上記のコードで問題なく動作するようになりました。

于 2012-08-16T16:16:24.323 に答える