gpt4 book ai didi

c# - HttpException 未被异常过滤器捕获

转载 作者:行者123 更新时间:2023-11-30 23:02:41 27 4
gpt4 key购买 nike

我在测试项目中遇到了一些问题。C#、ASP .NET MVC 5、>NET Framework 4.5.1

出于某种原因,我的异常过滤器无法捕获 Controller 抛出的 HttpException。 Controller 代码:

    [HttpGet]
[HandleError(ExceptionType = typeof(HttpException), View = "Error")]
public ViewResult Test()
{
throw new HttpException(404, "Not found!");
return View();
}

错误 View :

@model HandleErrorInfo 
@{
ViewBag.Title = "Sorry, something went wrong!";
Layout = "~/Views/Shared/_BasicLayout.cshtml";
}
<h1>Error: @Model.Exception.Message</h1>
<h1>Status code: @Response.StatusCode</h1>
<div style="display:none;">@Model.Exception.StackTrace</div>

我在我的 web.config 中写了一个 customErrors 指令并将模式属性设置为“on”并将 defaultRedirect 属性设置为/Content/StaticError.html

静态错误.html

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
</head>
<body>
<h1>ERROR</h1>
</body>
</html>

我试过抛出几个异常,例如 ArgumentOutOfRange、NullReference 和其他一些异常。我得到了一个自定义错误 View 作为响应。但是当我在没有更改上面代码中的任何内容的情况下抛出 HttpException 时,我被重定向到 StaticError.html。

我如何抛出 HttpException 并获得自定义错误 View ,而不是黄色的死亡画面或默认的重定向页面?

感谢任何帮助。

最佳答案

HttpExceptionASP.MVC 管道已知的一种特殊异常类型,其目的是返回带有特定错误代码的 HTTP 响应,这实际上并不意味着不受控制的服务器错误,因此默认 HandleErrorAttributeHttpException 不执行任何操作,代码不是 500。查看 here .

关于c# - HttpException 未被异常过滤器捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50352329/

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