キャッシュされたページをプログラムで無効にすることに問題があります。キャッシュされたページをプログラムで無効にするときに、ValidateCacheOutput関数が呼び出されない
私は、RSSフィードを公開するためのページをコーディングし、そのページは、例えば3分で予め設定された時間間隔でキャッシュされます。しかし、新しいUMMメッセージが発生してデータベースに保存されると、そのページは再キャッシュされます。
このタスクでは、「プログラムでキャッシュされたページを無効にする」に関するMSのドキュメントに示されているソリューションを使用しました。私は次の関数をコード化しましたが、
public static void ValidateCacheOutput(HttpContext context, Object data, ref HttpValidationStatus status)
{
if (((bool)context.Application["IsNewUMMRaised"]) == true)
status = HttpValidationStatus.Invalid;
else
status = HttpValidationStatus.Valid;
}
とし、次のコードをPage_load関数の先頭に追加しました。
Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(ValidateCacheOutput), null);
Following code is executed when a UMM is saved to database.
Application["IsNewUMMRaised"] = true;
問題はすなわち、ページがアプリケーション変数IsNewUMMRaised
がtrueに設定されていても、予め設定された時間間隔で再キャッシュされ、Webページにアクセスした際に上記のイベントハンドラ関数が呼び出されないということです。私はなぜこのように動作するのか、ページにアクセスしたときに上記のイベントハンドラ関数が呼び出されるように私のコードをどのように変更するのだろうと思います。
Response.End()コード行をコメントアウトした後、RSSフィードはFireFoxで動作しますが、出力にはRSS XMLとページHTMLの両方が含まれているため、Internet Explorerでは動作しません。 Internet ExplorerはHTMLのページを許容しません。 – TIE
問題はまだ解決されていません。私は誰かがこの問題を解決する方法を知っているのだろうか。あなたの親切な助けをありがとう。 – TIE