2009-08-06 95 views
0

我有一个ASP.NET 3.5应用程序,它在1.1中启动,并已从IIS5移植到IIS6,现在我们将转到IIS7。回到1.1天,我们实现了基于HTTP模块的URL重写功能,这些功能仍然非常好 - 非常复杂的逻辑非常稳定。它使我们能够采取的URL这样iis7虚拟目录重定向从iis6更改

www.abc.com/merchant 

,并弄清楚,“ABC”代表着一个品牌的产品,“商人”是出售该品牌的众多公司之一。到现在为止还挺好。

一路上我们有一些商人接近的样子,别人合并,等等。为了保持URL的他们,我们有时候会使用IIS6的虚拟目录重定向能力www.abc.com/oldMerchant重定向到www.abc .com/newMerchant,还是完全的东西,比如www.micorsoft.com - 谁知道。现在大约有十几种。

我想在IIS7中做同样的事情,我发现了很多描述不同机制的帖子(如this)。我遇到的最大问题是,在IIS7中,虚拟根路径仍然通过我的URL重写逻辑,而它们不在IIS6中。也就是说,并非将www.abc.com/oldMerchant重定向到www.abc.com/newMerchant,而是将URL重写为首,并得出结论认为,旧商品不是有效的商家(因为它应该)。

在我走下编码之路来解决这个问题之前,有人知道我错过了一个神奇的开关吗?

+0

是的,我们有同样的问题,我们已经修复它。你需要显示你的web.config代码/设置来指出问题 – 2009-08-07 06:18:30

+0

你有没有在http://www.urlrewriting.net/149/en/home.html – 2009-08-10 04:25:18

回答

0

我的眼睛在我脑海中回荡。

。也就是说,不是重定向到www.abc.com/oldMerchant www.abc.com/newMerchant,URL重写第一次看到它,并得出结论认为,oldMerchant不是有效的商家(如它应该)。

因此,在您的重写逻辑中,您是否可以为要重定向的网站包含适当的重定向规则? (我假设重定向可能在IIS7重写模块中)。

+0

的帮助下实现URL重写这当然是可能的。在这种情况下,我遇到的问题是'oldMerchant'的记录已经消失。我希望我可以用IIS解决这个问题,而且没有像IIS6那样编写代码。 – n8wrl 2009-08-06 20:10:36

+0

好的,嘿。不知道发生了什么变化,但如果你特殊情况'oldMerchant'将其重定向到404页面或其他,它会满足。 – Cheeso 2009-08-06 22:35:43

0

你在集成模式还是经典模式下运行IIS7?我希望你在集成模式下运行。这是通过.Net管道发送所有流量的新模式。如果你切换到经典模式,我认为它可能会再次开始为你工作。

+0

集成模式,这是有道理的。 – n8wrl 2009-08-07 11:12:14

+0

如果他移动到经典模式,那么他会误IIS 7功能,经典模式实际上是IIS 6 http://blogs.msdn.com/tmarq/archive/2007/08/30/iis-7-0-asp -net-pipelines-modules-handlers-and-preconditions.aspx – 2009-08-07 12:25:20

+0

确实。修改代码是最好的答案。 – David 2009-08-07 14:32:23