asp.net - 在 HttpModule 中重写 URL 时,如何让波浪号 (~) 运算符起作用?

标签 asp.net .net url-rewriting httpmodule

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

enter image description here

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

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

enter image description here

波浪号运算符在重写后解析为 root 网络应用,而不是 obw 网络应用。这似乎是 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/

相关文章:

asp.net - 删除 ASP.NET HTML 页面标题中的多余空格?

javascript - 在 ASP.Net 中运行 javascript 时的执行顺序

.net - 使用 MVVM 模式在 Winforms 中显示 MessageBox

.htaccess - 重写 htaccess 以包含 www 并包含 url 的其余部分

regex - Apache 2.4 - 由于可能的配置错误,请求超出了 10 个内部重定向的限制

javascript - 如何使用 JScript 设置按钮的文本?

c# - 使用 SQL Service Broker 将服务与数据库解耦?

java - 将 Java Web 应用程序转换为 .Net

Apache:编辑 .conf 文件产生 "Invalid command ' Header'"

c# - 如何在 asp.net 母版页中将页脚保持在底部?