0

我正在尝试使用自定义 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 后也可以工作。

4

0 回答 0