54

フロントエンドでOpenWebjsライブラリを使用しており、特定の種類のエラーが発生したときに、.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が本当に必要であることに注意してください。代わりに、「200OK」を取得します。どうすればこれを達成できますか?

呼び出しを行うための私のURL構造は単純です:/ Main / TestError / 400

4

3 に答える 3

103

ASP.NETMVCアクションからHTTP404応答を送信する適切な方法は何ですか?

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);
}
于 2012-08-24T15:43:46.257 に答える
61

返したいのがエラーコードだけの場合は、次のようにすることができます。

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); 
于 2012-08-24T15:39:48.120 に答える
1

jsonの結果をビューに表示できない場合は、次を追加してみてください。

Response.TrySkipIisCustomErrors = true;

この前に :

Response.StatusCode = 400;

この投稿の詳細:https ://stackoverflow.com/a/37313866/9223103

于 2018-01-16T08:48:14.457 に答える