我有一个在ASP .NET 2 / IIS7 / Vista下运行的网站。我有一个URL重写模块,允许我使用无扩展名的URL。为了使其正常工作,我已经配置了config文件的system.webServer部分,以便将所有请求转发到aspnet_isapi.dll。我还将URL重写模块添加到模块部分,并将runAllManagedModulesForAllRequests设置为true。
当我启动网站并访问使用URL重写的页面时,页面正确呈现。然而,如果我访问另一个页面,网站就会停止工作,并显示404未找到错误。我还发现我的URL重写模块中的断点没有被触发。这几乎就像是IIS将第一个请求转发给了重写器,但随后的请求去了其他地方——错误页面提到Notification为MapRequestHandler,Handler为StaticFile。
如果我稍微更改一下web.config文件并保存它,触发网站重新启动,那么我就可以在浏览器中重新加载页面,一切都可以正常工作。然后我点击另一个链接,它又出问题了。
以下是配置文件的一些片段。首先,在system.web下:
当我启动网站并访问使用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>
该网站运行在经典模式下,而不是集成管道模式。
有没有人有任何想法?我怀疑我的配置有问题,但似乎找不到问题所在。