SiteMapPath перестает отображаться в ASP.NET 4 - PullRequest
2 голосов
/ 05 мая 2011

У нас есть элемент управления 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 Ответ

2 голосов
/ 31 августа 2011

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

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

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

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

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

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

...