diff --git a/src/Microsoft.AspNetCore.WebSockets/WebSocketMiddleware.cs b/src/Microsoft.AspNetCore.WebSockets/WebSocketMiddleware.cs index 006912b29c..cc61b1414d 100644 --- a/src/Microsoft.AspNetCore.WebSockets/WebSocketMiddleware.cs +++ b/src/Microsoft.AspNetCore.WebSockets/WebSocketMiddleware.cs @@ -40,12 +40,9 @@ namespace Microsoft.AspNetCore.WebSockets { // Detect if an opaque upgrade is available. If so, add a websocket upgrade. var upgradeFeature = context.Features.Get(); - if (upgradeFeature != null) + if (upgradeFeature != null && context.Features.Get() == null) { - if (_options.ReplaceFeature || context.Features.Get() == null) - { - context.Features.Set(new UpgradeHandshake(context, upgradeFeature, _options)); - } + context.Features.Set(new UpgradeHandshake(context, upgradeFeature, _options)); } return _next(context); diff --git a/src/Microsoft.AspNetCore.WebSockets/WebSocketOptions.cs b/src/Microsoft.AspNetCore.WebSockets/WebSocketOptions.cs index d6603adf8a..808cc86251 100644 --- a/src/Microsoft.AspNetCore.WebSockets/WebSocketOptions.cs +++ b/src/Microsoft.AspNetCore.WebSockets/WebSocketOptions.cs @@ -14,7 +14,6 @@ namespace Microsoft.AspNetCore.Builder { KeepAliveInterval = TimeSpan.FromMinutes(2); ReceiveBufferSize = 4 * 1024; - ReplaceFeature = false; } /// @@ -28,11 +27,5 @@ namespace Microsoft.AspNetCore.Builder /// The default is 4kb. /// public int ReceiveBufferSize { get; set; } - - /// - /// Gets or sets if the middleware should replace the WebSocket implementation provided by - /// a component earlier in the stack. This is false by default. - /// - public bool ReplaceFeature { get; set; } } } \ No newline at end of file diff --git a/test/AutobahnTestApp/Startup.cs b/test/AutobahnTestApp/Startup.cs index 67562d9ce0..97ac3d09f7 100644 --- a/test/AutobahnTestApp/Startup.cs +++ b/test/AutobahnTestApp/Startup.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; using Microsoft.Extensions.Logging; namespace AutobahnTestApp @@ -16,11 +17,14 @@ namespace AutobahnTestApp { if (!env.IsEnvironment("NativeSockets")) { - app.UseWebSockets(new WebSocketOptions + // Register a middleware that disables the server-provided WebSockets feature + app.Use((context, next) => { - ReplaceFeature = true + context.Features.Set(null); + return next(); }); } + app.UseWebSockets(); app.Use(async (context, next) => {