.NET Aspire中如何跳过Azure Blob Storage的API版本检查
问题场景
使用.NET Aspire启动Azure Blob Storage模拟器时,客户端创建容器时报错:
Error response [d84de2e6-ceba-46e9-acf4-b2c42479ac2c] 400 The API version 2024-05-04 is not supported by Azurite. Please upgrade Azurite to latest version and retry. If you are using Azurite in Visual Studio, please check you have installed latest Visual Studio patch. Azurite command line parameter "--skipApiVersionCheck" or Visual Studio Code configuration "Skip Api Version Check" can skip this error.
已知在Docker中可通过command: "azurite --skipApiVersionCheck"解决,需要在.NET Aspire中实现相同效果。
解决方法
在.NET Aspire的应用构建代码中,通过WithArgs方法为Azurite模拟器添加--skipApiVersionCheck命令行参数,同时修正原代码中builder.Build().Run()的位置错误(需放在所有服务配置完成后),具体修改如下:
修正并添加参数后的代码
var builder = DistributedApplication.CreateBuilder(args); var blobs = builder.AddAzureStorage("storage") .RunAsEmulator(options => { // 添加跳过API版本检查的命令行参数 options.WithArgs("--skipApiVersionCheck"); }) .AddBlobs("blobs"); var objectStorageApi = builder.AddProject<Projects.ObjectStorage_Api>("ObjectStorageApi") .WithReference(blobs); builder.Build().Run();
额外说明
WithArgs方法支持传递多个命令行参数,若有其他需求,可通过空格分隔参数或多次调用该方法实现。- 原代码中
builder.Build().Run()的位置错误,若提前执行会导致后续添加的项目引用无法生效,必须放在所有服务配置完成后执行。
内容的提问来源于stack exchange,提问作者Regestea

