Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在IIS7集成模式下执行重写URL的托管模块_Asp.net_Iis 7_Url Rewriting - Fatal编程技术网

Asp.net 在IIS7集成模式下执行重写URL的托管模块

Asp.net 在IIS7集成模式下执行重写URL的托管模块,asp.net,iis-7,url-rewriting,Asp.net,Iis 7,Url Rewriting,在我的ASP.NET应用程序中,我有两个HTTP模块。其中一个用于重写URL,另一个用于特定于应用程序的内容(自定义身份验证等)。URL重写模块针对所有请求执行,而另一个模块仅针对托管文件扩展名(如.aspx)执行 以下是如何在web.config中定义模块(请注意,UrlRewriteModule的前提条件为空。这将导致它对所有请求执行): 特别是在服务器负载下,我通常更喜欢避免它 那么,有没有一种方法可以让SiteModule在不使用Server.TransferRequest()重写UR

在我的ASP.NET应用程序中,我有两个HTTP模块。其中一个用于重写URL,另一个用于特定于应用程序的内容(自定义身份验证等)。URL重写模块针对所有请求执行,而另一个模块仅针对托管文件扩展名(如.aspx)执行

以下是如何在web.config中定义模块(请注意,UrlRewriteModule的前提条件为空。这将导致它对所有请求执行):


特别是在服务器负载下,我通常更喜欢避免它

那么,有没有一种方法可以让SiteModule在不使用Server.TransferRequest()重写URL时执行?


谢谢

我的IIS 7很脆弱,但在IIS6中,您可能会通过在/p/文件夹上创建一个新的应用程序(即使您不需要它在现实生活中存在)来欺骗它,然后打开通配符映射,以便该路径中的所有请求都进入.Net。在特定子文件夹上使用应用程序的原因是为了避免.Net在静态请求图像和css等内容时的开销。您是否尝试过内置ASP.Net URL路由?如果没有,我建议您检查一下,因为您可以在Global.asax或使用Regex的HTTP模块中完成路由。
<system.webServer>
  <modules>
    <add name="UrlRewriteModule" type="MySite.UrlRewriteModule" preCondition="" />
    <add name="SiteModule" type="MySite.SiteModule" preCondition="managedHandler" />
  </modules>
</system.webServer>