2011-11-08 5 views
2

私のasp.net mvc 3アプリケーションでは、いくつかのエラー処理を行いました。ローカルコンピュータで正常に動作します。しかし、ホスティングでは、おそらくiisは独自のエラーページでエラービューを置き換えます。私は思うし、私はほぼResponse.TrySkipIisCustomErrorsのためだと確信しています。asp.net mvc 3でのエラー処理は、ホスト上で正しく動作しません。

しかし、Response.TrySkipIisCustomErrorstrue;に設定しても効果はありません。

web.configファイル

<customErrors mode="Off"></customErrors> 

Global.asaxの私が好きなホスティングハンドルerrros上でIISを取得するには、このコードを書き換える方法

void Application_Error(object sender, EventArgs e) 
{ 
    var exception = Server.GetLastError(); 
    Response.Clear(); 
    Server.ClearError(); 
    Response.StatusCode = (int)HttpStatusCode.InternalServerError; 
    Response.TrySkipIisCustomErrors = true; 

    var routeData = new RouteData(); 
    routeData.Values["controller"] = "Errors"; 
    routeData.Values["action"] = "ServerError"; 

    var httpException = exception as HttpException; 
    if (httpException != null) 
    { 
     Response.StatusCode = httpException.GetHttpCode(); 
     switch (Response.StatusCode) 
     { 
      case 403: 
      routeData.Values["action"] = "Unathorized"; 
         break; 
      case 404: 
      routeData.Values["action"] = "NotFound"; 
         break; 
       } 
     } 

IController errorsController = new ErrorsController(); 
var rc = new RequestContext(new HttpContextWrapper(Context), routeData); 
errorsController.Execute(rc); 
} 

+0

あなたはMVCのエラーを処理する適切な方法ではないので、多くの答えを得ることはありません。私はちょうど私がここで説明したように適切なエラー処理に切り替える前に、似たような解決策でたくさん苦労しました:http://blog.gauffin.org/2011/11/how-to-handle-errors-in-asp-net -mvc/ – jgauffin

+1

ここで私の答えをチェック:http://stackoverflow.com/questions/6033681/how-to-override-httperrors-section-in-web-config-asp-net-mvc3/8403396#8403396 –

答えて

1

OnExceptionメソッドをオーバーライドするコントローラの基本クラスから派生させ、すべてのエラー処理コードをそこに配置してください。

関連する問題