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