在重写HttpModule中的URL时,如何让tilde(〜)运算符工作?

时间:2013-08-01 21:48:05

标签: asp.net .net url-rewriting httpmodule

我在IHttpModule中使用RewritePath()来“路由”到子网页应用程序,就像在这个IIS布局中一样:

enter image description here

例如,当出现 / root / bleh 请求时, root 应用程序中的HTTP模块会重写 / root / obw <的路径/ strong>希望 obw 应用程序能够接管。

除了波浪号(〜)无法正确解析之外,这大部分都有效:

enter image description here

在重写后,代字号运算符会解析为 root Web应用,而不是 obw Web应用。这似乎是RewritePath() rebaseClientPath 参数要考虑的事情,但改变该参数似乎没有任何区别。

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

1 个答案:

答案 0 :(得分:3)

这不起作用,因为RewritePath不是为了向其他应用程序发送请求而设计的。你说它“主要起作用”,但实际上它并没有按你的想法行事,而是在同一个应用程序中处理重写的请求。这就是为什么〜不解析子应用程序。

有很多事情也行不通。 e.g。

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

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

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