我通过在 filterConfig 注册中应用 HandleError 属性为应用程序启用了全局错误处理。
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}
然后,我使用自定义错误(web.config)希望为每个服务器错误显示友好的错误消息。
<customErrors mode="On" ></customErrors>
对于大多数异常,这似乎工作正常,并且我得到了预期的行为,因为正在显示自定义错误页面视图(共享视图文件夹中的 Error.cshtml)。
但是,我最近注意到,如果抛出的错误是 UnauthorizedAccessException,这不是我看到的行为。
我对此感到有些困惑,因为在 fiddler 中我看到这个 UnauthorizedAccessException 异常返回一个普通的 500 内部服务器错误,就像标准异常一样。
那么标准异常怎么会遵守我的 customError 设置而 UnauthorizedAccessException 却没有呢?
以及如何让它们表现相同,因为它们本质上都是一个错误,我想阻止最终用户看到。