检测映射的虚拟目录从IHttpModule的在C#的.NET应用程序
-
19-09-2019 - |
题
我有一个.NET网站,其中包含一个IHttpModule的我写了一些任务(授权等)。但该网站内有映射到不幸的是我不能改变或移动第三方应用程序的一些虚拟目录(例如社区服务器的论坛,adxstudio厘米等)。
我要寻找一种方式来阻止我的IHttpModule的请求时,针对这些虚拟目录的内容制作运行。这是可能的?
[编辑 - 加入下列]
我一直在尝试将在虚拟目录应用程序的Web.config文件中的<remove name="X"/>
节点内<httpModules>
但它似乎并没有被工作了。它可能不是一个很好的解决方案或者是因为第三方应用程序可以使更新我不想需要改变他们的代码/配置。
我也尝试添加一个<location path="." inheritInChildApplications="false">
围绕在父的Web.config我<system.web>
节点,但也似乎没有工作。
[编辑再次 - 加入更多]
原因是不起作用的,因为(我假设,而不是每次请求)的IHttpModule的的Init事件只是每个应用程序的生命周期触发一次。由于我在init事件中添加了一堆的事件侦听器,这些仍在开火后续请求......
解决方案
如果你有这些目录和他们的虚拟路径的列表,你可以建立他们的查找。
对于每一个HTTPRequest,它会触发你的模块,你可以检查的虚拟路径,看看它是否属于任何在查找路径。如果是的话,你就可以什么都不做或退出你的模块的代码。
PS:出于性能方面的问题,您可能需要存储在应用程序状态的查询(如HashMap中等等)
不隶属于 StackOverflow