From 7d050e803f6b3a51a1f976cb9c2cd230131563f9 Mon Sep 17 00:00:00 2001 From: "Carlos J. Aliaga" Date: Sun, 14 Jul 2019 15:11:50 +0200 Subject: [PATCH] Fixed RequestHeader to allow working with KeyValuePair. #12114 (#12157) --- .../FunctionalTests/RequestHeaderTests.cs | 22 ++++++++++++++++++- .../RequestProcessing/RequestHeaders.cs | 5 ++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/Servers/HttpSys/test/FunctionalTests/RequestHeaderTests.cs b/src/Servers/HttpSys/test/FunctionalTests/RequestHeaderTests.cs index 39e237eb5e..aa0829c6fa 100644 --- a/src/Servers/HttpSys/test/FunctionalTests/RequestHeaderTests.cs +++ b/src/Servers/HttpSys/test/FunctionalTests/RequestHeaderTests.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Collections.Generic; using System.Net.Http; using System.Net.Sockets; using System.Text; @@ -57,7 +58,26 @@ namespace Microsoft.AspNetCore.Server.HttpSys await SendRequestAsync(address, "Custom-Header", customValues); } } - + + [ConditionalFact] + public async Task RequestHeaders_ServerAddsCustomHeaders_Success() + { + string address; + using (Utilities.CreateHttpServer(out address, httpContext => + { + var requestHeaders = httpContext.Request.Headers; + var header = KeyValuePair.Create("Custom-Header", new StringValues("custom")); + requestHeaders.Add(header); + + Assert.True(requestHeaders.Contains(header)); + return Task.FromResult(0); + })) + { + string response = await SendRequestAsync(address); + Assert.Equal(string.Empty, response); + } + } + private async Task SendRequestAsync(string uri) { using (HttpClient client = new HttpClient()) diff --git a/src/Shared/HttpSys/RequestProcessing/RequestHeaders.cs b/src/Shared/HttpSys/RequestProcessing/RequestHeaders.cs index 0f87c3565a..a89f2a934a 100644 --- a/src/Shared/HttpSys/RequestProcessing/RequestHeaders.cs +++ b/src/Shared/HttpSys/RequestProcessing/RequestHeaders.cs @@ -110,7 +110,7 @@ namespace Microsoft.AspNetCore.HttpSys.Internal void ICollection>.Add(KeyValuePair item) { - ((IDictionary)this).Add(item.Key, item.Value); + ((IDictionary)this).Add(item.Key,item.Value); } void ICollection>.Clear() @@ -124,8 +124,7 @@ namespace Microsoft.AspNetCore.HttpSys.Internal bool ICollection>.Contains(KeyValuePair item) { - object value; - return ((IDictionary)this).TryGetValue(item.Key, out value) && Object.Equals(value, item.Value); + return ((IDictionary)this).TryGetValue(item.Key, out var value) && Equals(value, item.Value); } void ICollection>.CopyTo(KeyValuePair[] array, int arrayIndex)