gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:21:35 25 4
gpt4 key购买 nike

我正在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com