55using ImageWizard . Cleanup ;
66using ImageWizard . Core . Json ;
77using Microsoft . AspNetCore . Hosting ;
8+ using Microsoft . Extensions . Logging ;
89using Microsoft . Extensions . Options ;
910using System . Text . Json ;
1011
@@ -15,10 +16,15 @@ namespace ImageWizard.Caches;
1516/// </summary>
1617public class FileCache : ICache , ICleanupCache , ILastAccessCache
1718{
18- public FileCache ( IOptions < FileCacheOptions > options , IWebHostEnvironment hostingEnvironment , ICacheLock cacheLock )
19+ public FileCache (
20+ IOptions < FileCacheOptions > options ,
21+ IWebHostEnvironment hostingEnvironment ,
22+ ICacheLock cacheLock ,
23+ ILogger < FileCache > logger )
1924 {
2025 Options = options ;
2126 CacheLock = cacheLock ;
27+ Logger = logger ;
2228
2329 if ( Path . IsPathFullyQualified ( options . Value . Folder ) )
2430 {
@@ -45,6 +51,11 @@ public FileCache(IOptions<FileCacheOptions> options, IWebHostEnvironment hosting
4551 /// </summary>
4652 private ICacheLock CacheLock { get ; }
4753
54+ /// <summary>
55+ /// Logger
56+ /// </summary>
57+ private ILogger < FileCache > Logger { get ; }
58+
4859 protected FileInfo GetFileInfo ( FileType type , string key )
4960 {
5061 string typeString = type . ToTypeString ( ) ;
@@ -99,7 +110,7 @@ public virtual async Task WriteAsync(IMetadata metadata, Stream stream)
99110 //delete existing data
100111 blobStream . SetLength ( 0 ) ;
101112
102- await stream . CopyToAsync ( blobStream ) ;
113+ await stream . CopyToAsync ( blobStream ) ;
103114 }
104115
105116 private async Task < Metadata ? > ReadMetadataAsync ( string key )
@@ -113,9 +124,18 @@ public virtual async Task WriteAsync(IMetadata metadata, Stream stream)
113124
114125 using Stream metadataStream = metaFile . OpenRead ( ) ;
115126
116- Metadata ? metadata = await JsonSerializer . DeserializeAsync ( metadataStream , ImageWizardJsonSerializerContext . Default . Metadata ) ;
127+ try
128+ {
129+ Metadata ? metadata = await JsonSerializer . DeserializeAsync ( metadataStream , ImageWizardJsonSerializerContext . Default . Metadata ) ;
130+
131+ return metadata ;
132+ }
133+ catch ( Exception ex )
134+ {
135+ Logger . LogWarning ( ex , $ "Reading metadata is failed for key \" { key } \" ") ;
117136
118- return metadata ;
137+ return null ; //simulate "not found".to recreate a new cached data.
138+ }
119139 }
120140
121141 private async Task WriteMetadataAsync ( IMetadata metadata )
0 commit comments