MVC中的自定义错误页面未送达

时间:2015-05-25 04:44:47

标签: c# asp.net-mvc custom-error-pages

我正在尝试在ASP.NET MVC(版本5.2.3)项目中设置自定义错误页面。我跟着prescribed setup,但我仍然无法显示页面。

我试图通过在我的一个控制器操作中引发异常来测试页面。

所以,我的问题是......

  1. 如何设置自定义页面?
  2. 如何为它们设置测试?
  3. 有人可以帮我指导吗?

    我的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>
    

    我的控制器行动看起来像:
    这是我的控制器的一个例子。

    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 个答案:

答案 0 :(得分:0)

我完成了类似的工作,创建了一个错误控制器,使用3种不同的方法(Error401,Error403,Error404),以下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>