是什么之间的区别customErrors
,并httpErrors
在ASP.NET MVC应用程序的web.config文件的部分?
使用每个部分的准则是什么?
*2016年4月更新
当.net代码抛出异常(404,403,500等)时使用customErrors属性,并且当IIS本身抛出异常时使用httpErrors属性.
/ myfakeextensionslessurl - > httpErrors 404
/myfakeaspsx.aspx - > customErrors 404
/myfakeimage.jpg - > httpErrors 404
/throw500.apx - > customErrors 500
/ throw500 - > customErrors 500
试图正确配置这一点有很多陷阱.因此,如果您正在寻找一个快速示例,您拥有的最佳选择是:
示例1:使用html页面
示例2:使用aspx页面
在aspx错误页面中,您需要执行以下操作(示例404页面):
<%
Response.StatusCode = 404;
Response.TrySkipIisCustomErrors = true;
%>
注意:无法在customErrors部分中使用扩展名更少的URL !.(没有黑客)
一种解决方法是禁用自定义错误,让http错误处理自定义页面.朋友创建了这样的设置,当我找到一些时间时,我会分享代码.
背景
一个好的自定义错误页面将:
在本地访问问题页面时显示真实的异常
远程访问问题页面时显示自定义页面
不会重定向,而只是显示错误页面内容(因为seo原因)
将显示正确的状态代码
所以要澄清我们的配置中的一些选项:
On
,Off
,RemoteOnly
.
On
=始终显示自定义错误页面
Off
=始终显示真实的错误
RemoteOnly
=在本地显示错误,但远程显示自定义错误页面.所以我们想要RemoteOnly
声明1
ResponseRedirect
或ResponseRewrite
.该ResponseRedirect
模式将错误页面重定向到自定义错误页面.对于链接爬虫(SEO),这将导致302 - > 500,但您希望链接爬虫获得500错误.
customErrors
模式.选择您有:Custom
,Detailed
,DetailedLocalOnly
.
一篇很有帮助我的博客文章是:http://benfoster.io/blog/aspnet-mvc-custom-error-pages
免责声明:这是根据我的经验而未经证明的事实.
两者都用于定义网站的错误处理,但不同的软件指的是不同的配置元素.
customErrors
是Visual Studio开发服务器(又名VSDS或Cassini)使用的遗留(可向后兼容)元素.
httpErrors
是仅由IIS7使用的新元素.
这突出了在使用VSDS而不是本地IIS时开发ASP.NET网站时可能出现的问题.
另外,如果您希望完全控制错误输出,请参阅本文,了解如何使用IIS7处理错误消息.
开发中VSDS
使用customErrors
将站点发布到IIS6
- 使用customErrors
将站点发布到IIS7
- 使用httpErrors
.
如果你发展,VSDS
但发布到IIS7
,那么我想你将需要两者.
与
仍然可以在IIS7 +中使用
为ASP.NET处理的请求指定自定义错误页面
仅处理ASP.NET应用程序中的请求
不处理静态文件,如HTML文件或目录("友好")URL
在IIS7中介绍
为IIS处理的请求指定自定义错误页面
处理ASP.NET应用程序内的请求和/或处理ASP.NET应用程序之外的请求*
处理所有文件和URL*
注意:不再需要使用
customErrors
引用来源:ASP.NET中的自定义404和错误页面(优秀文章)
ExecuteURL
提供动态内容,例如.aspx页面(该path
值必须是服务器相对URL):
File
提供自定义错误文件,例如.html页面:
参考:HTTP错误(www.iis.net)
有关更多详细信息,请阅读上面的www.iis.net链接