私は簡単なことをしようとしていますが、私は答えを見つけることができません。 アプリケーションレベル(ウェブサイト用)でキャッシュを削除する方法を知っています。WebRoleでWindows Azure Appfabric Cache全体をクリアする方法は?
しかし、webrole startで私のAzure Appfabricキャッシュのすべてのキャッシュをクリアする必要があります。
EDIT:できたらどうなりますか? Azure Asp.net共有キャッシュの重大な誤動作を考慮するか、私は愚かですか?
これは私がにこだわって、シナリオ:私はいくつかの異なるウェブサイト
- キャッシング、これは結果的に、いくつかのキャッシュされたページが60分
- ためAppFabricのキャッシュに保存されているOutputCache期間=「3600」VaryByParam =「*」%>、ない空想コード
- 私はそれらを参照@平野定期<%は、ユナーを考えてみましょうですフーdのようなパス上にキャッシュが作成されます
- Webサイトをリセットするか、新しいデプロイメントをアップロードします
- 新しく作成されたインスタンスにこのパスがあるとします: 'F:\ sitesroot \ X-X'
- あなたは、私が持っているHERESに結果を得る:
ディレクトリを 'E:\ sitesroot 12 \' が存在しません。ファイルの変更の監視を開始できませんでした。
System.Web.HttpException (0x80070003): Directory 'E:\sitesroot\12' does not exist. Failed to start monitoring file changes.
at System.Web.FileChangesMonitor.FindDirectoryMonitor(String dir, Boolean addIfNotFound, Boolean throwOnError)
at System.Web.FileChangesMonitor.StartMonitoringPath(String alias, FileChangeEventHandler callback, FileAttributesData& fad)
at System.Web.Caching.CacheDependency.Init(Boolean isPublic, String[] filenamesArg, String[] cachekeysArg, CacheDependency dependency, DateTime utcStart)
at System.Web.Caching.CacheDependency..ctor(Int32 dummy, String[] filenames)
at System.Web.Caching.OutputCache.HasDependencyChanged(Boolean isFragment, String depKey, String[] fileDeps, String kernelKey, String oceKey, String providerName)
at System.Web.Caching.OutputCache.Get(String key)
at System.Web.Caching.OutputCacheModule.OnEnter(Object source, EventArgs eventArgs)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
現在appfacbricキャッシュはハードパス「E:\ sitesroot \」とcachedepencyに頼っていたので、この問題があるかもしれないことを理解することが私にいくつかの時間を要しました。この経路が変わるなら、それは何ですか?
どうすればいいですか?私はここで失われている、私Global.asax Application_Startでappcacheをクリアしようとしましたが、これは動作していない(と私はそれがなぜ理解していない)。
は、ここでのGlobal.asaxのApplication_Start
Public Shared Sub cacheClear()
Dim keys As New List(Of String)()
' retrieve application Cache enumerator
Dim enumerator As IDictionaryEnumerator = HttpRuntime.Cache.GetEnumerator()
' copy all keys that currently exist in Cache
While enumerator.MoveNext()
keys.Add(enumerator.Key.ToString())
End While
' delete every key from cache
For i As Integer = 0 To keys.Count - 1
HttpRuntime.Cache.Remove(keys(i))
Next
End Sub
これはトリックを行う必要がありますが、それが思わない各ウェブサイト上のキャッシュをクリアするために私のコードです。
確かに私は行方不明です。
EDIT
私はAppFabricのための完全asp.net outputcacheプロバイダをドロップし、AppFabricのでカスタムキャッシュを書き終わりました。うまく動作し、紺碧のコードとキャッシュの依存性はほとんどありません。
こんにちは、Azureの「プラグアンドプレイ」の重大なミスロジックがAsp.net用のキャッシュシステムを発見したと思います。私は自分の投稿を更新します。 – kdstack