【发布时间】:2010-10-11 13:15:02
【问题描述】:
我们继承了一个使用 Intelligencia.UrlRewriter 模块的应用程序。我们的环境虽然是 IIS7。我们已经将我们的站点设置为在经典的 asp.net 应用程序池中运行(这显然适用于很多此类问题)。但是,我们仍然没有看到我们应用中的 URL 被重写。
有人遇到过这种情况吗?
【问题讨论】:
标签: iis iis-7 url-rewriting
我们继承了一个使用 Intelligencia.UrlRewriter 模块的应用程序。我们的环境虽然是 IIS7。我们已经将我们的站点设置为在经典的 asp.net 应用程序池中运行(这显然适用于很多此类问题)。但是,我们仍然没有看到我们应用中的 URL 被重写。
有人遇到过这种情况吗?
【问题讨论】:
标签: iis iis-7 url-rewriting
是的,我在 Intelligencia.UrlRewriter 模块上遇到了完全相同的问题,在 Win Vista 和 IIS7 下运行,但是切换到经典的 asp.net 应用程序池确实解决了这个问题。您是否在新的虚拟目录中运行该应用程序?这有时会混淆应用程序的根路径,这可能会对 web.config 中的规则产生影响
【讨论】:
您需要在 system.webServer 元素上定义配置,例如:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRewriter"
type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" />
</modules>
</system.webServer>
您可以保留这两个配置。你现在可能拥有的是:
<httpModules>
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" />
</httpModules>
查看http://learn.iis.net/page.aspx/243/aspnet-integration-with-iis7/上的“将 ASP.NET 应用程序迁移到 IIS 7.0 集成模块”部分
ps。只要有那个配置,我就一直在使用它,没有任何问题。
更新 1: 还要检查 http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx,特别是“方法 3:使用 HttpModule 使用 IIS7 执行无扩展 URL 重写”,因为我添加的配置具有无扩展配置。
【讨论】:
我发现了同样的问题,经过几次尝试后,我发现将 asp 模式更改为集成管道会有所帮助。
【讨论】:
如果您使用的是 IIS7,请不要忘记在 web.config 文件的 system.webServer 部分添加以下行
<system.webServer>
<modules runAllManagedModulesForAllRequests=”true”>
<add name=”UrlRewriter” type=”Intelligencia.UrlRewriter.RewriterHttpModule” />
</modules>
<validation validateIntegratedModeConfiguration=”false” />
</system.webServer>
如
http://frozengraphics.wordpress.com/2009/12/06/intelligencia-urlrewriter-and-iis7/
【讨论】: