Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfeiyun0112 <feiyun0112@gmail.com>2022-02-10 21:46:39 +0300
committerStephen Halter <halter73@gmail.com>2022-04-14 03:47:45 +0300
commit94bb5878be7ca9d83a033652f5d55783f37b3461 (patch)
tree202f955d9dca305e46f8c775a864dc0b68702d4e
parent308378368c1182e98e7af93ed6e66c38f945837e (diff)
Fix diff checks for ContentRoot and WebRootbackport/pr-40095-to-release/6.0
-rw-r--r--src/DefaultBuilder/src/ConfigureHostBuilder.cs4
-rw-r--r--src/DefaultBuilder/src/ConfigureWebHostBuilder.cs8
-rw-r--r--src/DefaultBuilder/test/Microsoft.AspNetCore.Tests/WebApplicationTests.cs30
3 files changed, 39 insertions, 3 deletions
diff --git a/src/DefaultBuilder/src/ConfigureHostBuilder.cs b/src/DefaultBuilder/src/ConfigureHostBuilder.cs
index fdf8b2d0bc..87e24d8488 100644
--- a/src/DefaultBuilder/src/ConfigureHostBuilder.cs
+++ b/src/DefaultBuilder/src/ConfigureHostBuilder.cs
@@ -62,6 +62,7 @@ namespace Microsoft.AspNetCore.Builder
var previousApplicationName = _configuration[HostDefaults.ApplicationKey];
// Use the real content root so we can compare paths
var previousContentRoot = _context.HostingEnvironment.ContentRootPath;
+ var previousContentRootConfig = _configuration[HostDefaults.ContentRootKey];
var previousEnvironment = _configuration[HostDefaults.EnvironmentKey];
// Run these immediately so that they are observable by the imperative code
@@ -74,7 +75,8 @@ namespace Microsoft.AspNetCore.Builder
throw new NotSupportedException($"The application name changed from \"{previousApplicationName}\" to \"{_configuration[HostDefaults.ApplicationKey]}\". Changing the host configuration using WebApplicationBuilder.Host is not supported. Use WebApplication.CreateBuilder(WebApplicationOptions) instead.");
}
- if (!string.Equals(previousContentRoot, HostingPathResolver.ResolvePath(_configuration[HostDefaults.ContentRootKey]), StringComparison.OrdinalIgnoreCase))
+ if (!string.Equals(previousContentRootConfig, _configuration[HostDefaults.ContentRootKey], StringComparison.OrdinalIgnoreCase)
+ && !string.Equals(previousContentRoot, HostingPathResolver.ResolvePath(_configuration[HostDefaults.ContentRootKey]), StringComparison.OrdinalIgnoreCase))
{
throw new NotSupportedException($"The content root changed from \"{previousContentRoot}\" to \"{HostingPathResolver.ResolvePath(_configuration[HostDefaults.ContentRootKey])}\". Changing the host configuration using WebApplicationBuilder.Host is not supported. Use WebApplication.CreateBuilder(WebApplicationOptions) instead.");
}
diff --git a/src/DefaultBuilder/src/ConfigureWebHostBuilder.cs b/src/DefaultBuilder/src/ConfigureWebHostBuilder.cs
index 0a2c482f53..d0ed6a822a 100644
--- a/src/DefaultBuilder/src/ConfigureWebHostBuilder.cs
+++ b/src/DefaultBuilder/src/ConfigureWebHostBuilder.cs
@@ -39,7 +39,9 @@ namespace Microsoft.AspNetCore.Builder
public IWebHostBuilder ConfigureAppConfiguration(Action<WebHostBuilderContext, IConfigurationBuilder> configureDelegate)
{
var previousContentRoot = _context.HostingEnvironment.ContentRootPath;
+ var previousContentRootConfig = _configuration[WebHostDefaults.ContentRootKey];
var previousWebRoot = _context.HostingEnvironment.WebRootPath;
+ var previousWebRootConfig = _configuration[WebHostDefaults.WebRootKey];
var previousApplication = _configuration[WebHostDefaults.ApplicationKey];
var previousEnvironment = _configuration[WebHostDefaults.EnvironmentKey];
var previousHostingStartupAssemblies = _configuration[WebHostDefaults.HostingStartupAssembliesKey];
@@ -48,7 +50,8 @@ namespace Microsoft.AspNetCore.Builder
// Run these immediately so that they are observable by the imperative code
configureDelegate(_context, _configuration);
- if (!string.Equals(HostingPathResolver.ResolvePath(previousWebRoot, previousContentRoot), HostingPathResolver.ResolvePath(_configuration[WebHostDefaults.WebRootKey], previousContentRoot), StringComparison.OrdinalIgnoreCase))
+ if (!string.Equals(previousWebRootConfig, _configuration[WebHostDefaults.WebRootKey], StringComparison.OrdinalIgnoreCase)
+ && !string.Equals(HostingPathResolver.ResolvePath(previousWebRoot, previousContentRoot), HostingPathResolver.ResolvePath(_configuration[WebHostDefaults.WebRootKey], previousContentRoot), StringComparison.OrdinalIgnoreCase))
{
// Diasllow changing the web root for consistency with other types.
throw new NotSupportedException($"The web root changed from \"{HostingPathResolver.ResolvePath(previousWebRoot, previousContentRoot)}\" to \"{HostingPathResolver.ResolvePath(_configuration[WebHostDefaults.WebRootKey], previousContentRoot)}\". Changing the host configuration using WebApplicationBuilder.WebHost is not supported. Use WebApplication.CreateBuilder(WebApplicationOptions) instead.");
@@ -58,7 +61,8 @@ namespace Microsoft.AspNetCore.Builder
// Disallow changing any host configuration
throw new NotSupportedException($"The application name changed from \"{previousApplication}\" to \"{_configuration[WebHostDefaults.ApplicationKey]}\". Changing the host configuration using WebApplicationBuilder.WebHost is not supported. Use WebApplication.CreateBuilder(WebApplicationOptions) instead.");
}
- else if (!string.Equals(previousContentRoot, HostingPathResolver.ResolvePath(_configuration[WebHostDefaults.ContentRootKey]), StringComparison.OrdinalIgnoreCase))
+ else if (!string.Equals(previousContentRootConfig, _configuration[WebHostDefaults.ContentRootKey], StringComparison.OrdinalIgnoreCase)
+ && !string.Equals(previousContentRoot, HostingPathResolver.ResolvePath(_configuration[WebHostDefaults.ContentRootKey]), StringComparison.OrdinalIgnoreCase))
{
// Disallow changing any host configuration
throw new NotSupportedException($"The content root changed from \"{previousContentRoot}\" to \"{HostingPathResolver.ResolvePath(_configuration[WebHostDefaults.ContentRootKey])}\". Changing the host configuration using WebApplicationBuilder.WebHost is not supported. Use WebApplication.CreateBuilder(WebApplicationOptions) instead.");
diff --git a/src/DefaultBuilder/test/Microsoft.AspNetCore.Tests/WebApplicationTests.cs b/src/DefaultBuilder/test/Microsoft.AspNetCore.Tests/WebApplicationTests.cs
index 8f724498dd..d487d25949 100644
--- a/src/DefaultBuilder/test/Microsoft.AspNetCore.Tests/WebApplicationTests.cs
+++ b/src/DefaultBuilder/test/Microsoft.AspNetCore.Tests/WebApplicationTests.cs
@@ -1687,6 +1687,36 @@ namespace Microsoft.AspNetCore.Tests
}
[Fact]
+ public void EmptyAppConfiguration()
+ {
+ var wwwroot = Path.Combine(AppContext.BaseDirectory, "wwwroot");
+ bool createdDirectory = false;
+ if (!Directory.Exists(wwwroot))
+ {
+ createdDirectory = true;
+ Directory.CreateDirectory(wwwroot);
+ }
+
+ try
+ {
+ var builder = WebApplication.CreateBuilder();
+
+ builder.WebHost.ConfigureAppConfiguration((ctx, config) => { });
+
+ using var app = builder.Build();
+ var hostEnv = app.Services.GetRequiredService<Hosting.IWebHostEnvironment>();
+ Assert.Equal(wwwroot, hostEnv.WebRootPath);
+ }
+ finally
+ {
+ if (createdDirectory)
+ {
+ Directory.Delete(wwwroot);
+ }
+ }
+ }
+
+ [Fact]
public void HostConfigurationNotAffectedByConfiguration()
{
var builder = WebApplication.CreateBuilder();