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

これには長い間苦労しましたが、最終的に Microsoft に何が起こっているのかを理解してもらうことができました。短編小説は、MS がこのホットフィックスで対処したことです: http://support.microsoft.com/default.aspx?scid=kb;en-US;2472263

私たちの場合、Web サイトへの最初のリクエストが Cookie を使用しないデバイス (この場合は Russion ボット、Yandex) からのものであった場合、サイトマップは Cookie を使用しない URL で構築され、キャッシュされます。次に、Cookie をサポートしないデバイスは、Cookie を使用しないセッションの URL でサイトマップがキャッシュされる方法が原因で、まったく機能しなくなります。最初の症状はランダムでしたが、最終的には、アプリ プールのリサイクルとそれに続くこのボットからの最初のリクエストに絞り込むことができました。

Cookie を強制したい場合に機能する別の回避策は、web.config に次の変更を加えることです。

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

これにより、Cookie を使用しない URL を使用せずにサイトマップが作成されます。

お役に立てれば!!

于 2011-08-31T14:41:50.560 に答える