如果我将以下行添加到 ASP.NET MVC 操作方法
throw new Exception("outer", new SecurityException("inner"));
死机黄屏上实际显示的错误是内部SecurityException,完全没有提及外部异常。
安全异常
应用程序试图执行一个操作,但未执行。
安全策略允许。授予此申请
所需权限请联系您的系统管理员或更改
配置文件中应用程序的信任级别。
异常详细信息:System.Security.SecurityException:内部
来源错误:
执行期间产生未处理的异常
当前的网络请求。有关原产地和地点的信息
可以使用下面的异常堆栈跟踪来识别异常。
堆栈跟踪:
[安全异常:内部]
这是预期的行为吗?
外部异常是什么类型似乎并不重要。即使它是另一个 SecurityException,也永远不会显示该消息。默认的 SecurityException 错误消息非常模糊,我想捕获它并添加一些更具体的信息。如果我不将原始 SecurityException 包含为 innerException,则效果很好,但理想情况下我想这样做。
此行为源自 ASP.NET“核心”,而不是 ASP.NET MVC。不幸的是,错误格式化程序类是内部的,并且使用类型不提供任何扩展点,允许人们在不替换错误报告机制的情况下调整行为。解决方法是用自定义错误页面/视图替换默认的“黄屏死机”页面,在该页面/视图中公开人们喜欢的信息。
这正是生产中通常应该做的事情。就您而言,这仅意味着您将有一个用于调试的备用版本,而不是使用 ASP.NET 提供的默认版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)