我在IHttpModule中使用RewritePath()来“路由”到子Web应用程序,如以下IIS布局所示:

例如,当对 / root / bleh 的请求进入时,应用程序中的HTTP模块重写了 / root / obw 的路径,希望 obw 应用程序将被接管。

除波浪号(〜)无法正确解析外,这通常可以工作:

重写后,代字号运算符解析为 Web应用程序,而不是 obw Web应用程序。这似乎是RewritePath()的rebaseClientPath参数要解决的问题,但是更改该参数似乎没有任何区别。

重写URL时,如何使波浪号(〜)运算符正确解析?

最佳答案

这不起作用,因为RewritePath并非旨在将请求发送到其他应用程序。您说它“最有效”,但实际上它没有按照您的想法做,并且正在同一应用程序中处理重写的请求。这就是〜无法解析到子应用程序的原因。

许多事情也不起作用。例如

  • 如果您的obw文件夹下有一个global.asax,它将被忽略
  • 您将无法加载来自obw / bin的程序集

  • 换句话说,在RewritePath的上下文中,它只是将obw视为普通的子文件夹,而不是任何特殊的东西。

    作为替代方案,您可以考虑使用IIS URL Rewriter module,它不会出现此问题。

    关于asp.net - 在HttpModule中重写URL时,如何使波浪号(〜)运算符起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18005227/

    10-10 11:26