0

エラー ID を与えるルート データ値を追加して、Application.OnError からコントローラー アクションにエラー ID を送信することで、ASP.NET MVC でエラーを処理しています。

Global.asax.cs/OnError:

var routeData = new RouteData();
routeData.DataTokens.Add("errorKey", errorId);
var context = new RequestContext(new HttpContextWrapper(Context), routeData);
errorController.Execute(コンテキスト);

そして、コントローラー/アクションでそれを読み取ります:

object errorKey = RouteData.DataTokens["errorKey"];

私のローカル マシンでは正常に動作しますが、サーバーでは errorKey が渡されませんでした。

これにはどのような理由が考えられますか?


サイトがWebサーバーを実行している場合の新しい観察:

  • Webサーバー自体のブラウザからアクセスすると、ルートデータが正常に転送されます
  • 別のマシンからアクセスすると、ルート データが転送されません
4

2 に答える 2

2

そのような方法でルート データを使用しようとしたことはありません。代わりにこれを調べてください。

HttpContext.Items["エラーキー"]

アイテムはあなたのリクエストの範囲です。

コントローラーにある TempData["errorKey"] も参照してください。

ASP.NET TempData はリクエスト間で保持されます

ルート データの値については、 RouteData.Values["errorKey"]を参照してください。

于 2010-09-07T15:06:22.763 に答える
1

理由が見つかりました:web.configでは次のように設定されていました:

<system.webServer>
<httpErrors errorMode="カスタム">

これにより、アクションが 2 回実行されました。1 回目は errorKey を使用し、2 回目は errorKey を使用せずに時間を決定します。に変更しました

<system.webServer>
<httpErrors errorMode="詳細">

アクションは、errorKeyを使用して1 回だけ実行されました。

于 2010-09-09T05:09:04.117 に答える