Asp.Net customErrors与httpErrors的区别

日期:2018-09-06 15:46:45    

先看一下简单的对比

customErrors

httpErrors

从对比中能看出 在IIS7之后  就没必要再用customErrors了,一切httpErrors都可以办了。

复制代码
<httpErrors errorMode="Custom" existingResponse="Replace"> <remove statusCode="403" subStatusCode="-1" /> <remove statusCode="404" subStatusCode="-1" /> <error statusCode="403" prefixLanguageFilePath="" path="/403.png" responseMode="ExecuteURL" /> <error statusCode="404" path="/404.aspx" responseMode="ExecuteURL" /> </httpErrors>
复制代码

 

其实还可以用一个clear标签代替多个remove。如下

<httpErrors errorMode="Custom" existingResponse="Replace"> <clear /> <error statusCode="403" prefixLanguageFilePath="" path="/403.png" responseMode="ExecuteURL" /> <error statusCode="404" path="/404.aspx" responseMode="ExecuteURL" /> </httpErrors>

 

 

Note:ExecuteURL 只能用于同一个应用下的ASP.NET文件,如果想要重定向到另一个应用,或者一个完全不一样的完整的URL,我们需要将responseMode设为Redirect。

<httpErrors errorMode="Custom" existingResponse="Replace"> <clear /> <error statusCode="404" path="http://www.bing.com" responseMode="Redirect"/> </httpErrors>

 

 

 

 


 

现在通过不同的URL来看两者的区别

给Web应用定义如下配置

复制代码
 <system.web> <customErrors mode="On" defaultRedirect="Error.html"> <error statusCode="403" redirect="/Error403" /> <error statusCode="404" redirect="/Error404" /> <error statusCode="500" redirect="/Error500" /> </customErrors> </system.web> <system.webServer> <httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL" > <remove statusCode="403"/> <remove statusCode="404"/> <remove statusCode="500"/> <error statusCode="403" responseMode="ExecuteURL" path="/Error403" /> <error statusCode="404" responseMode="ExecuteURL" path="/Error404" /> <error statusCode="500" responseMode="ExecuteURL" path="/Error500" /> </httpErrors> </system.webServer>
复制代码

现在如果尝试访问以下链接,将会产生对应的错误

 
URL Error StatusCode
/aaaaaa  httpErrors  404
/aaaaaa.aspx customErrors  404
/aaaaaa.jpg httpErrors  404
/throw500.apx customErrors  500
/throw500 customErrors  500

 

 

 

 

 

  1. 一般情况 customErrors标签上的model属性设为RemoteOnly,httpErrors上的errorModel设为DetailedLocalOnly
  2. 如果你将某个页面的StatusCode设为500,不要忘了设置如下属性
    context.Response.TrySkipIisCustomErrors = true;

     

上一篇:win2008 asp.net HTTP 500内部服务器错误解决办法

下一篇:access实现类似sql server中truncate语句

Copyright © 2007-2015 微风 所有权利

关于我们  |  联系我们  |  网站地图  |