From 5936bda9f33bc12c20ef02507b95e76169c9c070 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Mon, 2 Mar 2026 15:54:16 -0600 Subject: [PATCH] Add --disableProductStyleUrl to Azurite emulator args Include --disableProductStyleUrl in Azurite command line when running Azure Storage as an emulator. This is necessary because when a Container resource references the Storage emulator it gets a URL like storage.dev.internal:10000. Using a URL like this conflicts between the Storage SDK and the emulator because the Storage SDK sees port 10000 and uses path-style URLs. But the emulator rejects them because it expects "product-style" URLs. Fix #14044 --- src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs | 3 ++- .../Aspire.Hosting.Azure.Tests/AzureStorageExtensionsTests.cs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs b/src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs index 9728286a584..d5903e7be76 100644 --- a/src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs +++ b/src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs @@ -251,11 +251,12 @@ public static IResourceBuilder RunAsEmulator(this IResourc // The default arguments list is coming from https://github.com/Azure/Azurite/blob/c3f93445fbd8fd54d380eb265a5665166c460d2b/Dockerfile#L47C6-L47C106 // They need to be repeated in order to be able to add --skipApiVersionCheck + // --disableProductStyleUrl is required to ensure the emulator uses path-style URLs, and not “product-style” URLs which have the account name in the host name of the URL. var surrogate = new AzureStorageEmulatorResource(builder.Resource); var surrogateBuilder = builder.ApplicationBuilder .CreateResourceBuilder(surrogate) - .WithArgs("azurite", "-l", "/data", "--blobHost", "0.0.0.0", "--queueHost", "0.0.0.0", "--tableHost", "0.0.0.0", SkipApiVersionCheckArgument); + .WithArgs("azurite", "-l", "/data", "--blobHost", "0.0.0.0", "--queueHost", "0.0.0.0", "--tableHost", "0.0.0.0", "--disableProductStyleUrl", SkipApiVersionCheckArgument); configureContainer?.Invoke(surrogateBuilder); diff --git a/tests/Aspire.Hosting.Azure.Tests/AzureStorageExtensionsTests.cs b/tests/Aspire.Hosting.Azure.Tests/AzureStorageExtensionsTests.cs index 7601cc7b49a..29e0b366b49 100644 --- a/tests/Aspire.Hosting.Azure.Tests/AzureStorageExtensionsTests.cs +++ b/tests/Aspire.Hosting.Azure.Tests/AzureStorageExtensionsTests.cs @@ -146,7 +146,7 @@ public async Task AddAzureStorage_WithApiVersionCheck_ShouldSetSkipApiVersionChe var args = await ArgumentEvaluator.GetArgumentListAsync(storage.Resource); - Assert.All(["azurite", "-l", "/data", "--blobHost", "0.0.0.0", "--queueHost", "0.0.0.0", "--tableHost", "0.0.0.0"], x => args.Contains(x)); + Assert.All(["azurite", "-l", "/data", "--blobHost", "0.0.0.0", "--queueHost", "0.0.0.0", "--tableHost", "0.0.0.0", "--disableProductStyleUrl"], x => args.Contains(x)); if (enableApiVersionCheck) { @@ -167,6 +167,7 @@ public async Task AddAzureStorage_RunAsEmulator_SetSkipApiVersionCheck() var args = await ArgumentEvaluator.GetArgumentListAsync(storage.Resource); Assert.Contains("--skipApiVersionCheck", args); + Assert.Contains("--disableProductStyleUrl", args); } [Fact]