有没有办法检测当前请求是否通过ASP.NET 4.0 URL路由映射?
我有一个HTTP模块来处理应用程序的BeginRequest事件.我发现这个处理程序是针对所有文件类型调用的,包括CSS,JS,图像文件等,我只想在目标文件是ASPX页面时执行操作.
在路由页面的情况下,HttpRequest对象的所有属性都反映了请求的URL,而不是请求映射到的ASPX页面.如何确定请求是否由ASPX文件处理?
谢谢你的任何建议.
最佳答案 在Begin Request事件内部,尚未为特定URL定义Handler.
因此,无法确定最终将处理该URL的内容,因为IIS尚未决定.在触发Begin Request之后会发生这种情况,这就是为什么要调用所有文件类型的原因.
这就是为什么Begin Request不是真正执行需要专门针对.NET文件的代码的好事件的原因之一. Begin Request方法的一个很好用途是向请求或响应添加cookie或标头.无论最终处理请求是什么,都可以毫无问题地加以解决.
如前所述,我建议一个继承自System.Web.UI.Page的基类,所有其他页面都继承自或创建一个母版页.
现在没有特别知道你想要做什么,很难给出一个好的解决方案.可以测试一个URL来检查它是否会被Route触发,但我不知道当你可以通过基类或母版页来处理它时它是怎么看起来也是如此.