如果redirectMode =“ResponseRewrite”,错误不会被重定向到Http处理程序

时间:2010-04-22 14:37:53

标签: .net asp.net error-handling httphandler

我看到了类似的问题,但看起来似乎是由于一个无关的问题。

在3.5中,我有一个自定义错误处理程序,可记录错误并重定向用户。我的web.config设置如下:

    <httpHandlers>
                 <add path="error.ashx" type="MySite.Tools.WebErrorLogger, MySite.Tools" verb="*"/>
    </httpHandlers>
    <customErrors mode="On" defaultRedirect="error.ashx"
                  redirectMode="ResponseRewrite">
    </customErrors>

当redirectMode设置为"ResponseRedirect"时,一切正常(但Server.GetLastError()为null但似乎是有意的)

但是,使用ResponseRewrite时,我的处理程序未被调用,我看到ASP.Net默认错误页面。我对如何做到这一点有任何想法?

(遗憾的是,由于其他限制,我无法使用aspx页面或在global.asax中进行错误处理)

3 个答案:

答案 0 :(得分:0)

好吧,我过去曾问pretty similar question

解决方案是将错误页面转换为静态HTML页面 当然,动态页面上肯定会出现某种错误,但我找不到它。

答案 1 :(得分:0)

我遇到了同样的问题,我发现显然原因是.ashx文件,如果你使用正常的.aspx它会起作用,它对我有用;我仍然试图了解如何使用REsponseRewrite“启用”.ashx文件扩展名,因为它更合乎逻辑,而不是在我的情况下使用aspx页面。我在这里有一个关于这个主题的开放主题:

http://social.msdn.microsoft.com/Forums/it-IT/aspnetit/thread/7b8f5e36-44a8-40ea-bd73-2e99a1fd42dd

答案 2 :(得分:0)

当前.NET中没有办法使用ashx处理程序(从4.5开始)。

ResponseRewrite使用HttpServerUtility.Execute,它被硬编码为仅允许aspx页面或静态文件(或旧版ASP页面)。