3

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

在此处输入图像描述

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

这主要是有效的,除了波浪号 (~) 不能正确解析:

在此处输入图像描述

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

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

4

1 回答 1

3

这不起作用,因为 RewritePath 并非旨在将请求发送到不同的应用程序。你说它“大部分都有效”,但实际上它并没有按照你的想法做,而是在同一个应用程序中处理重写的请求。这就是为什么 ~ 没有解析到子应用程序的原因。

有很多东西也行不通。例如

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

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

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

于 2013-08-06T11:25:32.833 回答