I持って、次の一般構造を有しているASP.NET WebAPIの(V2)コントローラのアクション: WebAPIのBadRequestドロップ応答データ
[HttpPost]
public HttpResponseMessage Post(UserDTO model)
{
try {
// do something
}
catch (Exception ex)
{
var error = new {
errorMessage = ex.Message,
userId = 123,
// some other simple data
};
return Request.CreateResponse(HttpStatusCode.BadRequest, error);
}
return Request.CreateResponse(HttpStatusCode.OK, model);
}
私はローカルの開発サーバー上でこれを実行する
( IIS Expressの )、エラーがスローされると、JSONペイロードが返されます。{
config: {...},
data: {
errorMessage: "User invalid",
userId: 123,
...
},
status: 400,
statusText: "Bad Request"
}
私は同じコードを実行
は/リモート/プロダクション・サーバ上のデータは、(8.5 IIS)、すべては私が帰ってもらう:{
config: {...},
data: "Bad Request,
status: 400,
statusText: "Bad Request"
}
data
ペイロードが失われたカスタム/から剥がさ応答。このは、私がHttpStatusCode.BadRequest
からHttpStatusCode.OK
に変更した場合と同様に、Request.CreateResponse()
コールで使用されるHttpStatusCode
に関連すると表示され、カスタムデータペイロードがダウンロードされます。
私がテストしたところでは、返品をRequest.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
に変更しようとしましたが、結果は同じです。すなわち、データは単純な"Bad Request"文字列として返されました。
参照のため、APIはAngularJS $http.post()
呼び出しによって呼び出されています。
HttpStatusCode
の変更により、本番サーバー上の応答ペイロードがローカルではなく変更されるのはなぜですか?どんな助けでも大歓迎です。
申し訳ありませんが、私は尋ねる必要がありますが、この例外からの応答は確実ですか? IISとExpressは異なるプロセススタックを持っているため、例外は他の場所からのものです。 IISで、失敗した要求トレースを有効にして、例外ポイントを見つけるのを助けてください –
もしそれがダムならば、私は自分自身に同じことを尋ねました:-)はい、私はそうだと思いますが...プロダクションWebサイトで使用されるエラー処理。から を削除すると、データが正しく返されます。ですから、これはMVC/WebAPIの混在アプリケーションなので、WebAPI呼び出しのデフォルトのエラーハンドラを呼び出すのを避けるにはどうすればいいのでしょうか? –
Neilski