diff --git a/src/Hosting/Hosting/src/StaticWebAssets/StaticWebAssetsFileProvider.cs b/src/Hosting/Hosting/src/StaticWebAssets/StaticWebAssetsFileProvider.cs index e63fa411fc4f..5a9b578e988b 100644 --- a/src/Hosting/Hosting/src/StaticWebAssets/StaticWebAssetsFileProvider.cs +++ b/src/Hosting/Hosting/src/StaticWebAssets/StaticWebAssetsFileProvider.cs @@ -46,6 +46,11 @@ public IDirectoryContents GetDirectoryContents(string subpath) { var modifiedSub = NormalizePath(subpath); + if (BasePath == "/") + { + return InnerProvider.GetDirectoryContents(modifiedSub); + } + if (StartsWithBasePath(modifiedSub, out var physicalPath)) { return InnerProvider.GetDirectoryContents(physicalPath.Value); @@ -67,6 +72,11 @@ public IFileInfo GetFileInfo(string subpath) { var modifiedSub = NormalizePath(subpath); + if (BasePath == "/") + { + return InnerProvider.GetFileInfo(subpath); + } + if (!StartsWithBasePath(modifiedSub, out var physicalPath)) { return new NotFoundFileInfo(subpath); diff --git a/src/Hosting/Hosting/test/StaticWebAssets/StaticWebAssetsFileProviderTests.cs b/src/Hosting/Hosting/test/StaticWebAssets/StaticWebAssetsFileProviderTests.cs index 5fc2800e0f0d..a51a85fc0af7 100644 --- a/src/Hosting/Hosting/test/StaticWebAssets/StaticWebAssetsFileProviderTests.cs +++ b/src/Hosting/Hosting/test/StaticWebAssets/StaticWebAssetsFileProviderTests.cs @@ -117,6 +117,35 @@ public void StaticWebAssetsFileProvider_FindsFileWithSpaces() Assert.True(provider.GetFileInfo("/_content/Static Web Assets.txt").Exists); } + [Fact] + public void GetDirectoryContents_HandlesEmptyBasePath() + { + // Arrange + var provider = new StaticWebAssetsFileProvider("/", + Path.Combine(AppContext.BaseDirectory, "testroot", "wwwroot")); + + // Act + var directory = provider.GetDirectoryContents("/Static Web/"); + + // Assert + Assert.Collection(directory, + file => + { + Assert.Equal("Static Web.txt", file.Name); + }); + } + + [Fact] + public void StaticWebAssetsFileProviderWithEmptyBasePath_FindsFile() + { + // Arrange & Act + var provider = new StaticWebAssetsFileProvider("/", + Path.Combine(AppContext.BaseDirectory, "testroot", "wwwroot")); + + // Assert + Assert.True(provider.GetFileInfo("/Static Web Assets.txt").Exists); + } + [Fact] public void GetFileInfo_DoesNotMatch_IncompletePrefixSegments() {