加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 03:27:17 所属栏目:asp.Net 来源:网络整理
导读:我正在我的MVC3应用程序中实现自定义错误,它在web.config中打开: customErrors mode="On" error statusCode="403" redirect="/Errors/Http403" / error statusCode="500" redirect="/Errors/Http500" //customErrors 我的控制器非常简单,具有相应的正确命名
我正在我的MVC3应用程序中实现自定义错误,它在web.config中打开:

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

我的控制器非常简单,具有相应的正确命名视图:

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

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

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

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

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

403工作 – 我被重定向到我的自定义“/错误/ 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());

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

Server.GetLastError()

有关MVC3中自定义错误的最全面的部分,请参阅https://stackoverflow.com/a/7499406/1048369我发现它有很大的帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读