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.
Надеюсь это поможет!!