我有一个在 ASP .NET 2/IIS7/Vista 下运行的网站。我有一个 URL 重写模块,它允许我拥有无扩展名的 URL。为了让它工作,我配置了配置文件的 system.webServer 部分,以便所有请求都转发到 aspnet_isapi.dll。我还将 URL 重写模块添加到模块部分并将 runAllManagedModulesForAllRequests 设置为 true。
当我启动网站并访问使用 URL 重写的页面之一时,该页面会正确呈现。但是,如果我然后访问另一个页面,该站点将停止工作并且我得到一个 404 未找到。我还发现我在 URL 重写模块中的断点没有被命中。这几乎就像 IIS 将第一个请求转发给重写器,但随后的请求转到其他地方 - 错误页面将 Notification 提到为 MapRequestHandler,将 Handler 称为 StaticFile。
如果我随后对 web.config 文件进行小改动并保存它,触发网站重新启动,然后我可以在浏览器中重新加载页面并且一切正常。然后我点击另一个链接,它又坏了。
作为记录,这里有几个来自配置文件的片段。首先,在system.web下:
<httpModules>
<add name="UrlRewriteModule" type="Arcs.CoopFurniture.TelesalesWeb.UrlRewriteModule, Arcs.CoopFurniture.TelesalesWeb" />
</httpModules>
然后,在 system.webServer 下:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRewriteModule" type="Arcs.CoopFurniture.TelesalesWeb.UrlRewriteModule, Arcs.CoopFurniture.TelesalesWeb" preCondition="managedHandler" />
</modules>
<handlers>
<add name="AspNet" 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>
<validation validateIntegratedModeConfiguration="false" />
</system.web>
该站点在经典而不是集成管道模式下运行。
有没有人有任何想法?我怀疑我的配置在某处有问题,但我似乎找不到在哪里。