フロントエンドでOpenWeb jsライブラリを使用しており、特定のタイプのエラーが発生したときに.NET中間層に特定のHTTPヘッダーステータスコードを送信する必要があります。私はこれを行うことでそれを達成しようとしました:
public ActionResult TestError(string id) // id = error code
{
Request.Headers.Add("Status Code", id);
Response.AddHeader("Status Code", id);
var error = new Error();
error.ErrorID = 123;
error.Level = 2;
error.Message = "You broke the Internet!";
return Json(error, JsonRequestBehavior.AllowGet);
}
それは中途半端に働いた。スクリーンショットを参照してください: httpステータスコードhttp://zerogravpro.com/temp/pic.png
応答ヘッダーでステータスコード400を達成しましたが、要求ヘッダーで400が本当に必要であることに注意してください。代わりに、「200 OK」が表示されます。どうすればこれを達成できますか?
呼び出しを行うためのURL構造は単純です:/ Main/TestError/400
ASP.NET MVCアクションからHTTP 404応答を送信する適切な方法は何ですか?
あなたがしたいことはResponse.StatusCode
ヘッダーを追加する代わりに。
public ActionResult TestError(string id) // id = error code
{
Response.StatusCode = 400; // Replace .AddHeader
var error = new Error(); // Create class Error() w/ prop
error.ErrorID = 123;
error.Level = 2;
error.Message = "You broke the Internet!";
return Json(error, JsonRequestBehavior.AllowGet);
}
返されるのがエラーコードだけである場合は、次の操作を実行できます。
public ActionResult TestError(string id) // id = error code
{
return new HttpStatusCodeResult(id, "You broke the Internet!");
}
参照: Mvc.HttpStatusCodeResultに関するMSDN記事 。
それ以外の場合、他の情報を返したい場合は
Response.StatusCode = id
の代わりに
Response.AddHeader("Status Code", id);
JSONの結果をビューに取得できない場合は、これを追加してみてください:
Response.TrySkipIisCustomErrors = true;
この前に :
Response.StatusCode = 400;