Global.asax中的事件

时间:2015-02-09 05:38:38

标签: asp.net global-asax

下面给出了示例网址

localhost/MyPage.aspx/1582%20

asp.net抛出错误,说该页面不存在,据我所知,这是因为URL末尾的%20

错误被Application_Error中的Global.asax捕获,但是我希望将其重定向到某个页面,我还希望我的Application_Error能够记录错误,没有页面重定向

我可以使用Global.asax中的其他事件来处理此重定向吗?我尝试PreSendRequestHeaders,但仍然转到Application_Error

感谢。

1 个答案:

答案 0 :(得分:1)

不,你不能,因为only one event for such situation而且是Application_ErrorGlobal.asax中的事件处理程序是HttpApplication)。

但你可以implement an IHttpModule,解析其中的网址,如果正确,请将用户重定向到目标网页(另请参阅here)。
您应该记住,默认情况下,并非所有请求都发送到此类模块,因此您可能通过各种方式在web.config中注册模块:

经典模式

<configuration>
  <system.web>
<httpModules><add name="HelloWorldModule" type="HelloWorldModule"/></httpModules>
  </system.web>
</configuration>

集成模式

<configuration>
<system.webServer><modules><add name="HelloWorldModule" type="HelloWorldModule"/></modules></system.webServer>
</configuration>

HTTP Handlers and HTTP Modules Overview