diff --git a/src/Http/Http.Extensions/src/HeaderDictionaryTypeExtensions.cs b/src/Http/Http.Extensions/src/HeaderDictionaryTypeExtensions.cs index 70f1c4da71..0b0c167aad 100644 --- a/src/Http/Http.Extensions/src/HeaderDictionaryTypeExtensions.cs +++ b/src/Http/Http.Extensions/src/HeaderDictionaryTypeExtensions.cs @@ -161,11 +161,11 @@ namespace Microsoft.AspNetCore.Http private static IDictionary KnownListParsers = new Dictionary() { - { typeof(MediaTypeHeaderValue), new Func, IList>(value => { IList result; return MediaTypeHeaderValue.TryParseList(value, out result) ? result : null; }) }, - { typeof(StringWithQualityHeaderValue), new Func, IList>(value => { IList result; return StringWithQualityHeaderValue.TryParseList(value, out result) ? result : null; }) }, - { typeof(CookieHeaderValue), new Func, IList>(value => { IList result; return CookieHeaderValue.TryParseList(value, out result) ? result : null; }) }, - { typeof(EntityTagHeaderValue), new Func, IList>(value => { IList result; return EntityTagHeaderValue.TryParseList(value, out result) ? result : null; }) }, - { typeof(SetCookieHeaderValue), new Func, IList>(value => { IList result; return SetCookieHeaderValue.TryParseList(value, out result) ? result : null; }) }, + { typeof(MediaTypeHeaderValue), new Func, IList>(value => { return MediaTypeHeaderValue.TryParseList(value, out IList result) ? result : Array.Empty(); }) }, + { typeof(StringWithQualityHeaderValue), new Func, IList>(value => { return StringWithQualityHeaderValue.TryParseList(value, out IList result) ? result : Array.Empty(); }) }, + { typeof(CookieHeaderValue), new Func, IList>(value => { return CookieHeaderValue.TryParseList(value, out IList result) ? result : Array.Empty(); }) }, + { typeof(EntityTagHeaderValue), new Func, IList>(value => { return EntityTagHeaderValue.TryParseList(value, out IList result) ? result : Array.Empty(); }) }, + { typeof(SetCookieHeaderValue), new Func, IList>(value => { return SetCookieHeaderValue.TryParseList(value, out IList result) ? result : Array.Empty(); }) }, }; internal static T Get(this IHeaderDictionary headers, string name) @@ -204,7 +204,7 @@ namespace Microsoft.AspNetCore.Http if (StringValues.IsNullOrEmpty(values)) { - return null; + return Array.Empty(); } if (KnownListParsers.TryGetValue(typeof(T), out temp)) @@ -281,7 +281,7 @@ namespace Microsoft.AspNetCore.Http { return (IList)parameters[1]; } - return null; + return Array.Empty(); } } } diff --git a/src/Http/Http.Extensions/test/HeaderDictionaryTypeExtensionsTest.cs b/src/Http/Http.Extensions/test/HeaderDictionaryTypeExtensionsTest.cs index 1d01466284..06c0d967e6 100644 --- a/src/Http/Http.Extensions/test/HeaderDictionaryTypeExtensionsTest.cs +++ b/src/Http/Http.Extensions/test/HeaderDictionaryTypeExtensionsTest.cs @@ -99,24 +99,24 @@ namespace Microsoft.AspNetCore.Http.Headers } [Fact] - public void GetListT_KnownTypeWithMissingValue_Null() + public void GetListT_KnownTypeWithMissingValue_EmptyList() { var context = new DefaultHttpContext(); var result = context.Request.GetTypedHeaders().GetList(HeaderNames.Accept); - Assert.Null(result); + Assert.Empty(result); } [Fact] - public void GetListT_KnownTypeWithInvalidValue_Null() + public void GetListT_KnownTypeWithInvalidValue_EmptyList() { var context = new DefaultHttpContext(); context.Request.Headers[HeaderNames.Accept] = "invalid"; var result = context.Request.GetTypedHeaders().GetList(HeaderNames.Accept); - Assert.Null(result); + Assert.Empty(result); } [Fact] @@ -131,22 +131,22 @@ namespace Microsoft.AspNetCore.Http.Headers } [Fact] - public void GetListT_UnknownTypeWithTryParseListAndInvalidValue_Null() + public void GetListT_UnknownTypeWithTryParseListAndInvalidValue_EmptyList() { var context = new DefaultHttpContext(); context.Request.Headers["custom"] = "invalid"; var results = context.Request.GetTypedHeaders().GetList("custom"); - Assert.Null(results); + Assert.Empty(results); } [Fact] - public void GetListT_UnknownTypeWithTryParseListAndMissingValue_Null() + public void GetListT_UnknownTypeWithTryParseListAndMissingValue_EmptyList() { var context = new DefaultHttpContext(); var results = context.Request.GetTypedHeaders().GetList("custom"); - Assert.Null(results); + Assert.Empty(results); } [Fact] @@ -202,4 +202,4 @@ namespace Microsoft.AspNetCore.Http.Headers } } } -} \ No newline at end of file +}