2012-11-06 21 views
0

我得按照我的web.config:为什么我的.Net自定义错误处理一直工作?

<compilation defaultLanguage="vb" debug="false" targetFramework="4.0"/> 
<customErrors mode="On" defaultRedirect="~/error.html"/> 

它工作正常,显示我的自定义错误页,对于标准的错误(如页面的崩溃/请求不存在)。但是,它未能对下列具体要求,并公开调试信息:

https://mywebsite/Page.aspx?error=<iframe> 

如何捕捉所有情况,包括这些?返回

错误页面是:

Server Error in '/' Application. 

Runtime Error 

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine. 

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off". 

<!-- Web.Config Configuration File --> 

<configuration> 
    <system.web> 
     <customErrors mode="Off"/> 
    </system.web> 
</configuration> 

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL. 

<!-- Web.Config Configuration File --> 

<configuration> 
    <system.web> 
     <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/> 
    </system.web> 
</configuration> 
+0

你得到了什么错误信息? –

+0

Argh。试图粘贴它,但它坚持砍掉代码示例,只显示无用的描述... –

+0

困惑,为什么我看到该错误页面,当它清楚地表明,设置defaultRedirect将导致我看到而不是我自己的错误页面。特别是因为我的自定义错误页面适用于*大多数*错误... –

回答

3

BTW,如果你使用的是IIS 7

考虑以下几点:

1)<httpErrors>

<httpErrors>配置错误IIS本身的页面,在Web应用程序之外。这处理所有请求,无论它们实际上是由ASP.NET还是本地处理的。

例如:

<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <clear /> 
    <error statusCode="500" path="/Errors/500.aspx" responseMode="ExecuteURL"/> 
    <error statusCode="404" path="/Errors/404.aspx" responseMode="ExecuteURL"/> 
</httpErrors> 

2)使用HttpResponse.TrySkipIisCustomErrors物业获取或设置指定IIS 7.0自定义错误是否被禁用的值。

TrySkipIisCustomErrors属性仅在您的应用程序托管在IIS 7.0中时使用。在IIS 7.0中以经典模式运行时,TrySkipIisCustomErrors属性的默认值为true。在集成模式下运行时,TrySkipIisCustomErrors属性的默认值为false。

+0

使用IIS 7.5并添加完美适合我们。我们的重定向目标是HTML而不是ASPX,所以比第二种方法更好。 –

+0

对于我来说,帮助这里的关键是existingResponse =“替换”。没有这一点,我的一些自定义错误被跳过(取决于从ASP.NET返回的内容)。谢谢。 –

相关问题