我正在尝试使用自定义 CacheHash 类为 blob 的名称生成自定义键。
这是 IClass 的代码:
public interface ICustomCacheHash : ICacheHash
{
new string Create(string value, uint length);
}
和班级本身:
public class CustomCacheHash : ICustomCacheHash
{
public CustomCacheHash(IOptions<ImageSharpMiddlewareOptions> options)
{
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public string Create(string value, uint length)
{
Uri url = new Uri(value);
string image = url.AbsolutePath.Split('/').Last();
if (value.Contains("quality"))
{
string format = HttpUtility.ParseQueryString(url.Query).Get("size");
return image.Split('.')[0] + "_" + format + "." + image.Split('.')[1];
}
else
{
return image.Split('.')[0] + "_w" + HttpUtility.ParseQueryString(url.Query).Get("width") + "." + image.Split('.')[1];
}
}
}
和启动:
services.AddImageSharp(options =>
{
options.BrowserMaxAge = TimeSpan.Zero;
options.CacheMaxAge = TimeSpan.Zero;
})
.ClearProviders()
.Configure<AzureBlobStorageImageProviderOptions>(options =>
{
// The "BlobContainers" collection allows registration of multiple containers.
options.BlobContainers.Add(new AzureBlobContainerClientOptions
{
ConnectionString = ...
ContainerName = ...
});
})
.Configure<AzureBlobStorageCacheOptions>(options =>
{
...
})
.SetCache<AzureBlobStorageCache>()
.SetCacheHash<CustomCacheHash>()
.AddProvider<AzureBlobStorageImageProvider>();
}
这一切都在本地工作。但是,一旦我发布到 Azure 域,它会给我一个 HTTP 500,说该页面不工作。此外,它在使用原始的 Sixlabors 类发布到 Azure 后也可以工作。