私たちは、asp.net(vb)Webアプリケーションのチャート作成にzedgraph Webコントロールを使用します。生成されたイメージの一時ディレクトリがいっぱいになり、現在は2GB +に達しています。zedgraphイメージの一時ディレクトリを自動消去する方法は?
このディレクトリを自動的に消去する方法はありますか、そこから古いファイルを削除するには厄介なHttpContext.Cache expired callback
ハックを実装する必要がありますか?
おかげで、フロ
私たちは、asp.net(vb)Webアプリケーションのチャート作成にzedgraph Webコントロールを使用します。生成されたイメージの一時ディレクトリがいっぱいになり、現在は2GB +に達しています。zedgraphイメージの一時ディレクトリを自動消去する方法は?
このディレクトリを自動的に消去する方法はありますか、そこから古いファイルを削除するには厄介なHttpContext.Cache expired callback
ハックを実装する必要がありますか?
おかげで、フロ
だから、むしろ私の手の汚れ編集を取得し、zedgraphweb http://sourceforge.net/projects/zedgraphを再コンパイルするよりも、私は、ファイルの量に自分自身を扱う、より一般的なapporachを選びました。私はキャッシュのCacheItemRemovedCallbackを使って、タイマーのようなWebアプリケーションでコードを実行しています。このコードでもキャッシュアイテムが補充されるため、サイクルが更新されます。 voila:ディスククリーンアップは、Webアプリケーションで5分ごとに実行されます。
Public Module Maintenance
Private Const triggerKey As String = "MaintenanceDiskCleaner"
Friend Sub Run()
Try
SyncLock triggerKey
If Hosting.HostingEnvironment.Cache(triggerKey) Is Nothing Then
Hosting.HostingEnvironment.Cache.Add(triggerKey, _
DateTime.Now, _
Nothing, _
DateTime.Now.AddMinutes(5), _
Cache.NoSlidingExpiration, _
CacheItemPriority.Default, _
AddressOf CacheItemRemovedCallback)
End If
End SyncLock
Catch ex As Exception
End Try
End Sub
Public Sub CacheItemRemovedCallback(ByVal key As String, ByVal value As Object, ByVal reason As CacheItemRemovedReason)
Try
Dim dir As String = Hosting.HostingEnvironment.MapPath("~\ZedGraphImages")
If Directory.Exists(dir) Then
SyncLock triggerKey
Dim di As DirectoryInfo = New DirectoryInfo(dir)
Dim files As FileSystemInfo() = di.GetFileSystemInfos()
For Each file As FileSystemInfo In From f In files Where f.CreationTime < CType(value, DateTime)
Try
WebTools.Files.TryDelete(file.Name, 50)
Catch ex As Exception
End Try
Next
End SyncLock
End If
Run()
Catch ex As Exception
End Try
End Sub
End Module