asp.net(vb)Webアプリでのグラフ作成には、zedgraphWebコントロールを使用します。生成されたイメージの一時ディレクトリがいっぱいになり、2GB以上に達しました。
このディレクトリを自動的にクリアする方法はありますか、それともそこから古いファイルを削除するために厄介なHttpContext.Cache expired callback
ハックを実装する必要がありますか?
ありがとう、Flo
そのため、zedgraphweb http://sourceforge.net/projects/zedgraphを編集して再コンパイルするのではなく、ファイルの量を自分で処理する、より一般的なアプローチを選択しました。キャッシュのCacheItemRemovedCallbackを使用して、タイマーを使用するようにWebアプリでコードを実行しています。また、このコードはキャッシュアイテムを補充するため、サイクルを更新します。出来上がり: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