diff --git a/src/Microsoft.AspNetCore.WebSockets/Internal/HandshakeHelpers.cs b/src/Microsoft.AspNetCore.WebSockets/Internal/HandshakeHelpers.cs index a4bb0721ab..c001e9318e 100644 --- a/src/Microsoft.AspNetCore.WebSockets/Internal/HandshakeHelpers.cs +++ b/src/Microsoft.AspNetCore.WebSockets/Internal/HandshakeHelpers.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Security.Cryptography; using System.Text; +using Microsoft.AspNetCore.Http; namespace Microsoft.AspNetCore.WebSockets.Internal { @@ -63,14 +64,14 @@ namespace Microsoft.AspNetCore.WebSockets.Internal return validConnection && validUpgrade && validVersion && validKey; } - public static IEnumerable> GenerateResponseHeaders(string key, string subProtocol) + public static void GenerateResponseHeaders(string key, string subProtocol, IHeaderDictionary headers) { - yield return new KeyValuePair(Constants.Headers.Connection, Constants.Headers.ConnectionUpgrade); - yield return new KeyValuePair(Constants.Headers.Upgrade, Constants.Headers.UpgradeWebSocket); - yield return new KeyValuePair(Constants.Headers.SecWebSocketAccept, CreateResponseKey(key)); + headers[Constants.Headers.Connection] = Constants.Headers.ConnectionUpgrade; + headers[Constants.Headers.Upgrade] = Constants.Headers.UpgradeWebSocket; + headers[Constants.Headers.SecWebSocketAccept] = CreateResponseKey(key); if (!string.IsNullOrWhiteSpace(subProtocol)) { - yield return new KeyValuePair(Constants.Headers.SecWebSocketProtocol, subProtocol); + headers[Constants.Headers.SecWebSocketProtocol] = subProtocol; } } diff --git a/src/Microsoft.AspNetCore.WebSockets/WebSocketMiddleware.cs b/src/Microsoft.AspNetCore.WebSockets/WebSocketMiddleware.cs index 74f1e4f7d8..35e7f99019 100644 --- a/src/Microsoft.AspNetCore.WebSockets/WebSocketMiddleware.cs +++ b/src/Microsoft.AspNetCore.WebSockets/WebSocketMiddleware.cs @@ -155,11 +155,7 @@ namespace Microsoft.AspNetCore.WebSockets string key = string.Join(", ", _context.Request.Headers[Constants.Headers.SecWebSocketKey]); - var responseHeaders = HandshakeHelpers.GenerateResponseHeaders(key, subProtocol); - foreach (var headerPair in responseHeaders) - { - _context.Response.Headers[headerPair.Key] = headerPair.Value; - } + HandshakeHelpers.GenerateResponseHeaders(key, subProtocol, _context.Response.Headers); Stream opaqueTransport = await _upgradeFeature.UpgradeAsync(); // Sets status code to 101