0

我的任务是为 IIS 7.5 中的 .Net MVC 站点创建一些重写规则。我安装了 Url Rewrite Module,并配置了一些非常简单的规则,但没有成功。

所以我的第一个问题是,IIS 以什么顺序处理传入的 url?是传入 URL --> URL 重写 --> 重写 URL --> .Net MVC 路由管理器获取更新的 URL?

如果不是,那么它按什么顺序处理它,我怎样才能让 URL Rewrite 先处理 URL?

有一个复选框,上面写着“记录重写的 URL”,这个记录到 IIS 日志还是其他什么?

这是我创建的重写入站规则:

Pattern: (.*)/fin/(.*)
Rewrite URL: {R:1}/fi/{R:2}

任何帮助是极大的赞赏。

更新:2012 年 4 月 5 日 我仍然无法让它在系统上运行。我尝试通过 Localhost 来消除代理和负载平衡,但它仍然无法正常工作。我将它安装到另一台机器上,它就像一个冠军。任何建议将不胜感激。

** 更新:2012 年 4 月 6 日** 我仍然没有找到问题所在,但我想知道我的 MVC 应用程序的 web.config 是否导致任何问题。看起来 web.config 中的这些语句是否会导致这种情况?:

<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
  <remove name="WebDAVModule" />
</modules>

4

2 回答 2

0

射线,

您对重写过程步骤是正确的。在将请求传递给适当的 asp.net 应用程序之前,IIS 将首先重写 URL。

但是,在路由中使用 IIS 重写时要小心,因为它们可以相互竞争。特别是如果 IIS 以您未曾预料到的方式重写 URL。对我来说,像这样的案例证明 Jeff Atwood 在写博客时是对的:

有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。.

一般来说,我会错误地使用通过 IIS 重写的路由,并且只会使用 IIS 重写来强制执行一般规则,例如建立规范域(www 与无 www)、强制使用小写 url 或在 URL 上强制使用尾部斜杠.

你的问题似乎比这更具体。在对问题采取霰弹枪(如 URL 重写)之前,我会用尽所有路由选项。

于 2012-04-05T12:48:16.667 回答
0

2012 年 4 月 11 日更新

URL 重写模块实际上已正确安装。做了一些非常基本的测试,他们奏效了。发现我的规则的正则表达式不正确(有一个额外的斜杠),我需要执行 IISReset。如果其他人发现这篇文章,请确保您的重定向规则是正确的,并做一个非常简单的基本测试来验证它的工作原理。

于 2012-04-11T18:36:46.010 回答