asp.net-mvc-3 - 自定义错误适用于 HttpCode 403 但不适用于 500?

标签 asp.net-mvc-3 custom-errors

我正在我的 MVC3 应用程序中实现自定义错误,它在 web.config 中打开:

<customErrors mode="On">
  <error statusCode="403" redirect="/Errors/Http403" />
  <error statusCode="500" redirect="/Errors/Http500" />
</customErrors>

我的 Controller 非常简单,具有相应的正确命名的 View :

public class ErrorsController : Controller
{
    public ActionResult Http403()
    {
        return View("Http403");
    }

    public ActionResult Http500()
    {
        return View("Http500");
    }
}

为了测试,我在另一个 Controller 中抛出异常:

public class ThrowingController : Controller
{
    public ActionResult NotAuthorised()
    {
        throw new HttpException(403, "");
    }

    public ActionResult ServerError()
    {
        throw new HttpException(500, "");
    }
}

403 有效 - 我被重定向到我的自定义“/Errors/Http403”。

500 不起作用 - 我会被重定向到共享文件夹中的默认错误页面。

有什么想法吗?

最佳答案

除了标准的 customErros 配置之外,我使用 httpErrors 启动并运行时遇到了 500 个错误:

  <system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
      <remove statusCode="403" subStatusCode="-1" />
      <error statusCode="403" path="/Errors/Http403" responseMode="ExecuteURL" />
      <remove statusCode="500" subStatusCode="-1" />
      <error statusCode="500" path="/Errors/Http500" responseMode="ExecuteURL" />
    </httpErrors>
  </system.webServer>

并从 global.asax 中删除这一行

GlobalFilters.Filters.Add(new HandleErrorAttribute());

但是它并不完美,因为我正在尝试检索最后一个始终为空的错误。

Server.GetLastError()

参见https://stackoverflow.com/a/7499406/1048369我发现关于 MVC3 中自定义错误的最全面的文章很有帮助。

关于asp.net-mvc-3 - 自定义错误适用于 HttpCode 403 但不适用于 500?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10248700/

相关文章:

c# - 如何在图表上设置系列颜色?

c# - 问题: ASP. NET无法识别外部脚本

asp.net-mvc - 获取记录时出错 "LINQ to Entities does not recognize the method"

asp.net-mvc-3 - 关于 DotNetOpenAuth.IEmbeddedResourceRetrieval 和 Razor View 抛出的 InvalidOperationException

asp.net-mvc - CustomErrors web.config 设置和 azure 应用洞察日志记录之间有什么关系?

localization - 翻译错误信息是 "right"吗?

c# - 获取对 ASP.NET web.config customErrors 部分的引用

iis - 自定义 404 错误页面在 IIS 8.5 上不起作用

asp.net-mvc-3 - MVC3 客户端验证 : how to prevent page reloading?

ASP.NET MVC、自定义错误和响应重写