Aspire集成测试中获取Azurite Blob连接字符串的问题
Aspire.Hosting.Testing集成测试中Azure Blob存储连接字符串获取问题
问题场景
使用Aspire.Hosting.Testing开展集成测试,SQL Server已配置成功,但Blob存储部分遇到问题:需要将Blob端点的连接字符串传入环境参数。
当前配置Blob容器的代码:
var builder = DistributedApplication.CreateBuilder(args); var storage = builder .AddAzureStorage("storage") .RunAsEmulator();
尝试通过以下代码设置环境变量时触发错误:
context.EnvironmentVariables["CustomOptionObject:ConnectionString"] = storage.Resource.BlobEndpoint;
错误堆栈信息:
Failed to apply environment variable 'CustomOptionObject:ConnectionString'. A dependency may have failed to start. System.InvalidOperationException: No output for blobEndpoint at Aspire.Hosting.Azure.BicepOutputReference.get_Value() in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 400 at Aspire.Hosting.Azure.BicepOutputReference.GetValueAsync(CancellationToken cancellationToken) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 388 at Aspire.Hosting.ApplicationModel.ExpressionResolver.EvalValueProvider(IValueProvider vp) in /_/src/Aspire.Hosting/ApplicationModel/ExpressionResolver.cs:line 106 at Aspire.Hosting.ApplicationModel.ExpressionResolver.ResolveInternalAsync(Object value) in /_/src/Aspire.Hosting/ApplicationModel/ExpressionResolver.cs:line 182
已在项目构建器中添加.WaitFor(storage),需要解决如何正确获取Blob端点的连接字符串引用。
解决方法
- 获取完整连接字符串:使用
storage.GetConnectionString()方法获取包含端点、账户名、密钥的完整连接字符串,该方法会自动适配模拟器环境,避免解析错误。修改后的代码:
context.EnvironmentVariables["CustomOptionObject:ConnectionString"] = storage.GetConnectionString();
- 仅获取Blob服务端点URL:如果只需要端点地址,使用
storage.Resource.BlobServiceUri属性替代BlobEndpoint,该属性在模拟器运行时能正确返回可用的端点值:
context.EnvironmentVariables["CustomOptionObject:BlobEndpoint"] = storage.Resource.BlobServiceUri;
内容的提问来源于stack exchange,提问作者Davy
相关产品推荐
相关产品推荐

