Обработка ошибок в asp.net mvc 3 не работает должным образом на хостинге - PullRequest
2 голосов
/ 08 ноября 2011

В моем приложении asp.net mvc 3 я сделал некоторую обработку ошибок, и я рад, что она работает. Он работает правильно на локальном компьютере. Но на хостинге iis, возможно, заменяет просмотры ошибок своими страницами ошибок. Я думаю и почти уверен, что это из-за Response.TrySkipIisCustomErrors.

Но я установил Response.TrySkipIisCustomErrors на true;, и эффекта нет.

web.config

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

Global.asax

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);
}

Как переписать этот код, чтобы IIS на хосте обрабатывал ошибки, как я хочу.

1 Ответ

1 голос
/ 22 апреля 2012

Попробуйте извлечь из базового класса контроллера, который переопределит метод OnException, и поместите туда весь ваш код обработки ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...