IIS 7的URL重写器返回404服务器错误。

3
我已经实施了从这里开始的“方法3:使用HttpModule在IIS7中执行无扩展名URL重写”的操作: - http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx 那是基于URLRewriter模块: - http://urlrewriter.net/ 它似乎在我的本地环境上工作,但在生产服务器上(运行IIS 7)它显示“404-文件或目录未找到”页面。
我在谷歌上搜索了一下,但似乎没有找到解决方法。
最终,我们回到了IIS 6,并按照此处的说明进行操作,这起作用了: - http://urlrewriter.net/index.php/support/installation/windows-server-2003 但是,总有一天我们可能需要升级到共享托管环境中的IIS 7,并且会再次出现相同的问题!

这位主机管理员在IIS 7中使其正常工作了。他所做的只是“HTTP处理程序需要使用不同应用程序池的通配符映射才能在IIS 7中正常工作”。希望这能帮助那些在谷歌上找不到任何信息的人。 - Weng Fai Wong
4个回答

5

托管小伙子在IIS 7中让它工作了。HTTP处理程序需要与不同的应用程序池一起使用通配符映射才能在IIS 7中正常工作。希望这有所帮助。

确保您在Web.Config中拥有以下内容:

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <handlers>
    <add name="wildcard" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
  </handlers>
</system.webServer>

这就是我必须做的,以便将不存在的URL映射正确。 - Tim P.
完整的weg.config配置可以在此答案中找到(对我而言有效,Jason上面的解决方案在我的情况下没有帮助,asp.net 2.0集成,IIS 7.5):https://dev59.com/H3RB5IYBdhLWcg3wc3E0 - firepol
太好了!你救了我的一天。 - Ras

0

针对 IIS 7

将 HttpModules 定义从 system.web 复制到 system.webServer 中的 web.config 文件中。

<system.webServer>
    <modules>
        <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
    </modules>
<system.webServer>

应用程序池:托管管道模式 = 集成


0
我遇到了类似的问题,我的页面p1(已被重写,原本是p1.aspx)错误地被认为是p1目录。
我在web.config的中添加了<modules runAllManagedModulesForAllRequests="true" />,它似乎开始工作了。

0

我的同事遇到了同样的问题,我发现他将应用程序池设置为使用经典管线而不是应该使用的集成管线。 将其更改为集成后,问题得以解决。也许这个方法也可以解决你的问题?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接