我们继承了一个使用 Intelligencia.UrlRewriter 模块的应用程序。我们的环境虽然是 IIS7。我们已经将我们的站点设置为在经典的 asp.net 应用程序池中运行(这显然适用于很多此类问题)。但是,我们仍然没有看到我们应用程序中的 URL 被重写。
有没有人遇到过这个?
我们继承了一个使用 Intelligencia.UrlRewriter 模块的应用程序。我们的环境虽然是 IIS7。我们已经将我们的站点设置为在经典的 asp.net 应用程序池中运行(这显然适用于很多此类问题)。但是,我们仍然没有看到我们应用程序中的 URL 被重写。
有没有人遇到过这个?
您需要在 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 集成模块”部分
附言。只要该配置存在,我就一直在毫无问题地使用它。
更新 1:同时检查http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx,特别是“方法 3:使用 HttpModule使用 IIS7 执行无扩展名 URL 重写”,因为我添加的配置具有无扩展名配置。
Yes I had the exact same problem with Intelligencia.UrlRewriter module, running under Win Vista & IIS7, however switching to the classic asp.net app pool did fix the problem. Are you running the app in a new virtual directory? That can sometimes mess with the root path to the application which could make a difference to the rules in the web.config
我发现了同样的问题,经过几次尝试后,我发现将 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/