2017-01-03 4 views
1

キャッシュされたページをプログラムで無効にすることに問題があります。キャッシュされたページをプログラムで無効にするときに、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ページにアクセスした際に上記のイベントハンドラ関数が呼び出されないということです。私はなぜこのように動作するのか、ページにアクセスしたときに上記のイベントハンドラ関数が呼び出されるように私のコードをどのように変更するのだろうと思います。

答えて

0

申し訳ありません申し訳ありませんが、Page_load関数で呼び出されたResponse.End()関数が原因であるようです。このコード行が削除されると、ページにアクセスするとイベントハンドラ関数が正しく呼び出されます。

+0

Response.End()コード行をコメントアウトした後、RSSフィードはFireFoxで動作しますが、出力にはRSS XMLとページHTMLの両方が含まれているため、Internet Explorerでは動作しません。 Internet ExplorerはHTMLのページを許容しません。 – TIE

+0

問題はまだ解決されていません。私は誰かがこの問題を解決する方法を知っているのだろうか。あなたの親切な助けをありがとう。 – TIE

関連する問題