プロジェクトで 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に交換すると、まったく同じ問題が発生するため、何かが深刻に間違っています。