我的应用中启用了自定义错误. Web配置有如下条目:
<customErrors mode="On" defaultRedirect="~/Views/Shared/Error.cshtml"> <error statusCode="403" redirect="~/Views/Shared/UnauthorizedAccess.cshtml"/> <error statusCode="404" redirect="~/Views/Shared/FileNotFound.cshtml"/> </customErrors>
我还将HandleError属性应用为全局操作过滤器.我的FilterConfig内容如下:
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); }
此外,在〜/ Views / Shared文件夹中定义了默认的Error.cshtml.
然而,我的应用程序显示IE的丑陋默认错误页面.
更新
我检查了自定义错误页面在IE以外的所有其他浏览器中都显示正常.这是什么交易?
进一步更新
刚发现这篇文章. http://perishablepress.com/important-note-for-your-custom-error-pages/
它说IE希望自定义错误页面的大小至少为512字节.如果您的自定义错误页面小于该大小,它将抛出自己的丑陋错误页面.
最近更新
现在一切正常,我增加了错误页面的有效负载.但是,只有默认的Error.cshtml页面会显示未处理的异常.对于其他状态代码,我得到一个ASP.NET 404,说它无法在我在web.config文件中指定的位置找到我的自定义错误页面.我有自定义错误页面,它们具有我在web.config中指定的确切名称.
解决方法
您需要通过控制器和操作提供路径,而不是设置您的(* .cshtml)剃刀文件的路径.
这是我如何按预期工作的方式
<customErrors mode="Off" defaultRedirect="/home/error"> <error statusCode="404" redirect="/home/notfound" /> </customErrors>
在我的Home Controller中,我有一个名为Error的动作,另一个叫做NotFound
[AllowAnonymous] public class HomeController : Controller { public ActionResult Error() { var qs = HttpUtility.ParseQueryString(Request.Url.Query); var errorPath = qs["aspxerrorpath"]; return View(model: errorPath); } public ActionResult NotFound() { return View(); } ... }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。