我们在页面上有一个SiteMapPath控件,它绑定到带有默认提供程序的XML Web.sitemap文件。我们已经拥有这个网站多年,并且最近在Windows 2008 R2上的IIS 7.5上升级到了ASP.NET 4.0。出于某种原因,在运行大约6-12小时后(不确定何时,但它是一致的),SiteMapPath会停止为每个人加载。如果我们重新启动应用程序池或修改并保存web.config或web.sitemap XML文件,则SiteMapPath将再次开始加载。
有没有人有任何想法可能导致这个?没有文件句柄保持文件打开,我可以使用进程资源管理器查看。
谢谢,
约翰
答案 0 :(得分:2)
我们长期以来一直在努力解决这个问题,但最终能够让微软弄明白发生了什么。简短的故事是MS用这个修补程序解决了它: http://support.microsoft.com/default.aspx?scid=kb;en-US;2472263
在我们的案例中,如果对网站的第一个请求来自无cookie设备(在我们的例子中是一些Russion bot,Yandex),则站点地图将使用无法工作的URL构建并缓存。然后,任何支持cookie的设备将永远不会工作,因为站点地图使用不可思议会话的URL进行缓存。虽然最初症状是随机的,但我们最终能够将其缩小到应用程序池回收,然后是来自此机器人的第一个请求。
如果您想强制使用Cookie,另一种解决方法是对web.config进行此更改:
<authentication mode="Forms">
<forms cookieless="UseCookies" />
</authentication>
这会强制构建站点地图而不使用无Cookie网址。
希望这会有所帮助!!