diff --git a/src/Middleware/HttpsPolicy/src/HttpsLoggingExtensions.cs b/src/Middleware/HttpsPolicy/src/HttpsLoggingExtensions.cs index 308d51847a96..f3b00416f566 100644 --- a/src/Middleware/HttpsPolicy/src/HttpsLoggingExtensions.cs +++ b/src/Middleware/HttpsPolicy/src/HttpsLoggingExtensions.cs @@ -11,7 +11,6 @@ internal static class HttpsLoggingExtensions private static readonly Action _redirectingToHttps; private static readonly Action _portLoadedFromConfig; private static readonly Action _failedToDeterminePort; - private static readonly Action _failedMultiplePorts; private static readonly Action _portFromServer; static HttpsLoggingExtensions() @@ -31,12 +30,6 @@ static HttpsLoggingExtensions() new EventId(3, "FailedToDeterminePort"), "Failed to determine the https port for redirect."); - _failedMultiplePorts = LoggerMessage.Define( - LogLevel.Warning, - new EventId(4, "FailedMultiplePorts"), - "Cannot determine the https port from IServerAddressesFeature, multiple values were found. " + - "Please set the desired port explicitly on HttpsRedirectionOptions.HttpsPort."); - _portFromServer = LoggerMessage.Define( LogLevel.Debug, new EventId(5, "PortFromServer"), @@ -58,11 +51,6 @@ public static void FailedToDeterminePort(this ILogger logger) _failedToDeterminePort(logger, null); } - public static void FailedMultiplePorts(this ILogger logger) - { - _failedMultiplePorts(logger, null); - } - public static void PortFromServer(this ILogger logger, int port) { _portFromServer(logger, port, null); diff --git a/src/Middleware/HttpsPolicy/src/HttpsRedirectionMiddleware.cs b/src/Middleware/HttpsPolicy/src/HttpsRedirectionMiddleware.cs index ef59815de34d..215507912f3e 100644 --- a/src/Middleware/HttpsPolicy/src/HttpsRedirectionMiddleware.cs +++ b/src/Middleware/HttpsPolicy/src/HttpsRedirectionMiddleware.cs @@ -48,7 +48,7 @@ public HttpsRedirectionMiddleware(RequestDelegate next, IOptions(() => httpsRedirectionOptions.HttpsPort.Value); + _httpsPort = new Lazy(httpsRedirectionOptions.HttpsPort.Value); } else { @@ -149,8 +149,9 @@ private int TryGetHttpsPort() // If we find multiple different https ports specified, throw if (nullablePort.HasValue && nullablePort != bindingAddress.Port) { - _logger.FailedMultiplePorts(); - return PortNotFound; + throw new InvalidOperationException( + "Cannot determine the https port from IServerAddressesFeature, multiple values were found. " + + "Set the desired port explicitly on HttpsRedirectionOptions.HttpsPort."); } else { diff --git a/src/Middleware/HttpsPolicy/test/HttpsRedirectionMiddlewareTests.cs b/src/Middleware/HttpsPolicy/test/HttpsRedirectionMiddlewareTests.cs index c2a4e8e1caca..d4bd8fc7df2e 100644 --- a/src/Middleware/HttpsPolicy/test/HttpsRedirectionMiddlewareTests.cs +++ b/src/Middleware/HttpsPolicy/test/HttpsRedirectionMiddlewareTests.cs @@ -286,21 +286,13 @@ public async Task SetServerAddressesFeature_SingleHttpsAddress_Success() } [Fact] - public async Task SetServerAddressesFeature_MultipleHttpsAddresses_LogsAndFailsToRedirect() + public async Task SetServerAddressesFeature_MultipleHttpsAddresses_Throws() { - var sink = new TestSink( - TestSink.EnableWithTypeName, - TestSink.EnableWithTypeName); - var loggerFactory = new TestLoggerFactory(sink, enabled: true); using var host = new HostBuilder() .ConfigureWebHost(webHostBuilder => { webHostBuilder .UseTestServer() - .ConfigureServices(services => - { - services.AddSingleton(loggerFactory); - }) .Configure(app => { app.UseHttpsRedirection(); @@ -323,16 +315,9 @@ public async Task SetServerAddressesFeature_MultipleHttpsAddresses_LogsAndFailsT var request = new HttpRequestMessage(HttpMethod.Get, ""); - var response = await client.SendAsync(request); - Assert.Equal(200, (int)response.StatusCode); - - var logMessages = sink.Writes.ToList(); - - Assert.Single(logMessages); - var message = logMessages.First(); - Assert.Equal(LogLevel.Warning, message.LogLevel); + var ex = await Assert.ThrowsAsync(() => client.SendAsync(request)); Assert.Equal("Cannot determine the https port from IServerAddressesFeature, multiple values were found. " + - "Please set the desired port explicitly on HttpsRedirectionOptions.HttpsPort.", message.State.ToString()); + "Set the desired port explicitly on HttpsRedirectionOptions.HttpsPort.", ex.Message); } [Fact]