【问题标题】:Custom Error Pages In MVC Are Not Being Served未提供 MVC 中的自定义错误页面
【发布时间】:2015-05-25 04:44:46
【问题描述】:

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

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

所以,我的问题是……

  1. 如何设置自定义页面?
  2. 如何为他们设置测试?

谁能帮帮我?

我的 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 文件的路径正确...

当 responseMode="File"...
这就是我得到的...

【问题讨论】:

  • 您不应该直接从 customErrors 提供 cshtml 文件。
  • @ErikPhilips 好的……这很酷。为什么?还有……你有什么建议?

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


【解决方案1】:

我完成了类似的事情,创建了一个错误控制器,使用 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>

【讨论】:

    猜你喜欢
    • 2014-11-09
    • 2018-12-03
    • 2015-11-14
    • 2011-08-13
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    相关资源
    最近更新 更多