SiteMapPath перестает отображаться в ASP.NET 4

У нас есть элемент управления SiteMapPath на странице, и он связан с файлом XML Web.sitemap с поставщиком по умолчанию. У нас был этот сайт в течение многих лет, и мы недавно обновили его до ASP.NET 4.0 на IIS 7.5 на Windows 2008 R2. По какой-то причине примерно через 6-12 часов работы (не совсем точно, когда, но это согласованно) SiteMapPath перестает загружаться для всех. Если мы перезапустим пул приложений или изменим и сохраним XML-файлы web.config или web.sitemap, SiteMapPath снова начнет загрузку.

У кого-нибудь есть идеи, что может быть причиной этого? Нет никаких файловых дескрипторов, сохраняющих файл открытым, что я могу видеть с помощью Process Explorer.

Спасибо,

Джон

1 ответ

Решение

Мы боролись с этим долгое время, но в итоге смогли заставить Microsoft выяснить, что происходит. Краткий рассказ о том, что MS исправила это исправление: http://support.microsoft.com/default.aspx?scid=kb;en-US;2472263

В нашем случае, если первый запрос к веб-сайту был сделан с устройства без файлов cookie (в нашем случае это был какой-то бот Russion, Яндекс), карта сайта была бы создана с бесполезными URL-адресами и кэшировалась. Тогда любые устройства, которые поддерживают файлы cookie, никогда не будут работать из-за способа кэширования карты сайта с URL-адресами для сеансов без кулинарной обработки. Хотя изначально симптомы были случайными, в конечном итоге мы смогли сузить его до повторного использования пула приложений, за которым последовал первый запрос от этого бота.

Альтернативный обходной путь, который работает, если вы хотите принудительно использовать куки, - это внести изменения в файл web.config:

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

Это заставляет создавать карту сайта без использования URL-адресов без файлов cookie.

Надеюсь это поможет!!

Другие вопросы по тегам