2015-05-25 5 views
0

Я пытаюсь настроить собственные страницы ошибок в моем проекте ASP.NET MVC (версия 5.2.3). Я последовал за prescribed setup, но я все еще не могу заставить страницы появляться.Пользовательские страницы ошибок в MVC не обслуживаются

Я попытался проверить страницы, подняв исключение в одном из моих действий с контроллером.

Итак, мои вопросы ...

  1. Как настроить пользовательские страницы?
  2. Как настроить тесты для них?

Может ли кто-нибудь помочь мне помочь?

MY Web.config выглядит следующим образом:

<system.web> 

    <!-- CUSTOM ERRORS: customErrors --> 
    <customErrors mode="On" defaultRedirect="~/views/errors/error.cshtml" redirectMode="ResponseRewrite"> 
     <error statusCode="401" redirect="~/views/errors/forbidden.cshtml" /> 
     <error statusCode="403" redirect="~/views/errors/forbidden.cshtml" /> 
     <error statusCode="404" redirect="~/views/errors/notfound.cshtml" /> 
    </customErrors> 

    </system.web> 
<system.webServer> 

    <!-- CUSTOM ERRORS: httpErrors --> 
    <httpErrors existingResponse="Replace" errorMode="Custom"> 
     <remove statusCode="401" subStatusCode="-1" /> 
     <error statusCode="401" prefixLanguageFilePath="" path="~/views/errors/forbidden.cshtml" responseMode="File" /> 
     <remove statusCode="403" subStatusCode="-1" /> 
     <error statusCode="403" prefixLanguageFilePath="" path="~/views/errors/forbidden.cshtml" responseMode="File" /> 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="404" prefixLanguageFilePath="" path="~/views/errors/notfound.cshtml" responseMode="File" /> 
     <remove statusCode="500" subStatusCode="-1" /> 
     <error statusCode="500" prefixLanguageFilePath="" path="~/views/errors/error.cshtml" responseMode="File" /> 
    </httpErrors> 

    </system.webServer> 

МОЙ CONTROLLER ACTION выглядит следующим образом:
Вот пример моего контроллера.

public class HomeController : BaseController 
{ 
    #region <Actions> 

    // GET: Home/Index 
    [HttpGet] 
    [AllowAnonymous] 
    public ActionResult Index() 
    { 
     TraceHandler.TraceIn(TraceLevel.Info); 
     var unitOfWork = new AmericaVirtualToursUnitOfWork(); 
     var viewmodel = new HomeIndexViewModel(unitOfWork, User); 

     // Trying to get the ERROR page to show 
     throw new ApplicationException("Testing"); 

     TraceHandler.TraceOut(); 
     return View(viewmodel); 
    } 

    #endregion 
} 

Путь к CSHTML файлов является правильным ...
enter image description here

Когда responseMode = "Файл" ...
Это то, что я получаю ... enter image description here

+1

Вы не должны служить cshtml файлы непосредственно из CustomErrors. –

+0

@ ErikPhilips Хорошо ... это круто. Зачем? А что ты предлагаешь? –

ответ

0

Выполняю нечто подобное, создавая контроллер ошибок с тремя различными способами (Error401,Error403,Error404), w Ith следующим web.config указывающей к контроллеру:

<customErrors mode="On" defaultRedirect="~/Error"> 
    <error redirect="~/Error/Error401" statusCode="401" /> 
    <error redirect="~/Error/Error403" statusCode="403" />  
    <error redirect="~/Error/Error404" statusCode="404" /> 
</customErrors> 
Смежные вопросы