【问题标题】:SiteMapPath Stops Displaying in ASP.NET 4SiteMapPath 在 ASP.NET 4 中停止显示
【发布时间】:2011-08-19 11:49:46
【问题描述】:

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

有人知道是什么原因造成的吗?没有文件句柄保持文件打开,我可以使用进程资源管理器看到。

谢谢,

约翰

【问题讨论】:

    标签: asp.net iis-7.5 sitemapprovider sitemappath xml-sitemap


    【解决方案1】:

    我们为此苦苦挣扎了很长时间,但最终还是让微软弄清楚了发生了什么。短篇小说是 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 的情况下构建站点地图。

    希望这会有所帮助!

    【讨论】:

    • 哇,这是一个非常糟糕的错误!让我在多个层面上质疑表单身份验证。我们将无 cookie 模式更改为 UseCookies,并且没有遇到任何进一步的问题。
    猜你喜欢
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    相关资源
    最近更新 更多