确定 HttpModule 主/调用请求
有没有办法知道 httpmodule 中的主/调用请求? 我只希望我的模块代码在主 aspx 页面上运行,而不是图像和脚本。 我可以检查“.aspx”的路径,但似乎应该有更好的方法。
Is there a way to know the main/calling request in an httpmodule? I only want my module code to run for the main aspx page, not the images and scripts. I could check the path for ".aspx" but it seems like there should be a better way.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
IIS 不会对图像和脚本* 调用 ASP.NET 处理程序,因此 HTTPModule 无论如何都应该只在 ASPX 请求上运行。
IIS won't invoke the ASP.NET handler on images and scripts*, so a HTTPModule should only run on ASPX requests anyways.
从您的模块中,您可以调用 HttpContext.Current.Handler 并查看它是否是页面。 您可能必须在 PostMapRequestHandler 事件或生命周期中的后续事件中执行此操作。
或者,也许您可以检查哪个 HttpHandlerFactory 正在用于请求。 如果是PageHandlerFactory,则可以运行您的逻辑,否则可以跳过它。
From your module you could call HttpContext.Current.Handler and see if it is a Page. You'd probably have to do this in the PostMapRequestHandler event or a later event in the life cycle.
Alternatively, maybe you can check which HttpHandlerFactory is being used for the request. If it is the PageHandlerFactory, you can run your logic, and otherwise you can skip it.