Страницы пользовательских ошибок MVC3 работают в dev, а не на сервере - PullRequest
2 голосов
/ 04 января 2012

Я использую решение, подробно описанное в этом ТАК вопрос . Я использовал это на других сайтах раньше, и он работал нормально, и он работает на моем устройстве dev. Однако при публикации на нашем Windows VPS ошибки возвращают стандартную страницу ошибок IIS.

Я никогда раньше не администрировал веб-сервер, и я не уверен, какие настройки мне нужно проверить, чтобы выяснить, почему он не возвращает настроенные мной ошибки. Я попытался установить .net ошибки страниц для приложения, чтобы выключить и включить, со страницей по умолчанию, установленной на корневой сайт, а также просто '/'.

Я также попытался настроить страницы ошибок (в iis в 7.5) на пользовательские и подробные.

Похоже, что ничего из этого не влияет на возвращаемую страницу ошибки. Что я тут не так делаю?

Ответы [ 2 ]

1 голос
/ 05 января 2012

Я помню, что у меня была похожая проблема, и я добавил эту строку в код

 protected void Application_Error()
 {
 var exc = Server.GetLastError();
 var httpExc = exc as HttpException;
 Response.Clear();
 Server.ClearError();
 var routeData = new RouteData();
 routeData.Values["controller"] = "Error";
 routeData.Values["action"] = "General";
 routeData.Values["exception"] = exc;
 Response.StatusCode = 500;
 if (httpExc != null)
 {
     Response.StatusCode = httpExc.GetHttpCode();
     routeData.Values["action"] = "Http404";
     routeData.Values["exception"] = httpExc;
 }
 Response.TrySkipIisCustomErrors = true; //this fixed it
 IController errorsController = new WWS_Website.Controllers.ErrorController();
 var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
 errorsController.Execute(rc);

 }
0 голосов
/ 04 января 2012

Стандартные страницы ошибок IIS можно заменить с помощью раздела httpErrors в разделе system.webServer в файле web.config.Это в дополнение к разделу customErrors в system.web.

<system.webServer>
    ...
    <httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL">
        <remove statusCode="400" subStatusCode="-1" />
        <error statusCode="400" prefixLanguageFilePath="" 
            path="/errors/400" responseMode="ExecuteURL" />
        <remove statusCode="404" subStatusCode="13" />
        <error statusCode="404" subStatusCode="13" prefixLanguageFilePath=""
            path="/errors/file-upload-too-large" responseMode="Redirect" />
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" 
            path="/errors/404" responseMode="ExecuteURL" />
        <remove statusCode="403" subStatusCode="-1" />
        <error statusCode="403" prefixLanguageFilePath="" 
            path="/errors/403" responseMode="ExecuteURL" />
    </httpErrors>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...