2

キャッシュ アイテムの有効期限を使用して、スケジューラや Windows サービスを使用せずに ASP.NET アプリケーションのスケジュールされたジョブを作成する方法を説明しているこの記事を見つけました。それは私にとって本当に興味深いです!

記事では、著者はHttpContext.Current.Cache項目を追加するために使用しています。そのため、アイテムがキャッシュで期限切れになると、処理を行うことができます..

しかし、彼の記事では、HttpContextキャッシュにアクセスして、以前の有効期限が切れたときにアイテムを再度追加するために、サーバーから自分自身に「偽の」要求を行っています。HttpContext なしで Cache にアクセスするために使用しようとしましSystem.Web.Hosting.HostingEnvironmentた (したがって、「DummyRequest」を作成する必要はありません)。

このキャッシュについて、わからないことやわからないことはありますか? キャッシュは違うのですかHttpContextHostingEnvironmentこれは同じことだと思います。インテリセンスは「アプリケーション キャッシュ」のような 2 つを区別なく説明します。

4

2 に答える 2

3

それらは同じであり、両方ともHttpRuntime.Cache-ソースコードから:を呼び出します。

public static Cache System.Web.Hosting.HostingEnvironment.Cache
{
    get
    {
        return HttpRuntime.Cache;
    }
}

public Cache System.Web.HttpContext.Cache
{
    get
    {
        return HttpRuntime.Cache;
    }
}

また、これはMSDNの状態です。

HostingEnvironment.Cache
現在のアプリケーションのキャッシュインスタンスを取得します。
名前空間:System.Web.Hosting
アセンブリ:System.Web(system.web.dll内)
参照:http: //msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.cache(VS 。 85).aspx

HttpContext.Cacheプロパティ

現在のアプリケーションドメインのCacheオブジェクトを取得します。
名前空間:System.Web
アセンブリ:System.Web(System.Web.dll内)
参照:http://msdn.microsoft.com/en-us/library/system.web.httpcontext.cache.aspx

于 2012-06-22T11:33:03.977 に答える
1

どちらもキャッシュの同じインスタンスを指しています。取得できない場合がありますHttpContext.CurrentSystem.Web.Hosting.HostingEnvironment.Cacheそうすれば、フォールバックとしていつでもキャッシュを取得できます。

于 2012-06-22T11:33:13.183 に答える