2

我们在页面上有一个 SiteMapPath 控件,它使用默认提供程序绑定到 XML Web.sitemap 文件。我们拥有该站点多年,最近在 Windows 2008 R2 上升级到 IIS 7.5 上的 ASP.NET 4.0。出于某种原因,在运行大约 6-12 小时后(不确定具体时间,但它是一致的),SiteMapPath 停止为所有人加载。如果我们重新启动应用程序池或修改并保存 web.config 或 web.sitemap XML 文件,SiteMapPath 会再次开始加载。

有没有人有任何想法可能导致这种情况?没有文件句柄保持文件打开,我可以使用进程资源管理器看到。

谢谢,

约翰

4

1 回答 1

2

我们为此苦苦挣扎了很长时间,但最终能够让微软弄清楚发生了什么。短篇小说是 MS 已通过此修补程序解决了这个问题:http: //support.microsoft.com/default.aspx ?scid=kb;en-US;2472263

在我们的例子中,如果对网站的第一个请求来自无 cookie 设备(在我们的例子中是一些俄罗斯机器人 Yandex),则站点地图将使用无 cookie 的 URL 构建并缓存。然后,任何支持 cookie 的设备都将永远无法工作,因为站点地图与无 cookie 会话的 URL 一起缓存的方式。虽然最初的症状是随机的,但我们最终能够将其缩小到应用程序池回收,然后是来自该机器人的第一个请求。

如果您想强制使用 cookie,另一种解决方法是对 web.config 进行此更改:

<authentication mode="Forms">
     <forms cookieless="UseCookies" />
</authentication>

这会强制在不使用无 cookie 的 URL 的情况下构建站点地图。

希望这可以帮助!!

于 2011-08-31T14:41:50.560 回答