diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Formatters/MediaType.cs b/src/Microsoft.AspNetCore.Mvc.Core/Formatters/MediaType.cs index 7d37dcbd9b..1c7e008657 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/Formatters/MediaType.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/Formatters/MediaType.cs @@ -55,16 +55,19 @@ namespace Microsoft.AspNetCore.Mvc.Formatters throw new ArgumentOutOfRangeException(nameof(offset)); } - if (length < 0 || length > mediaType.Length) + if (length != null) { - throw new ArgumentOutOfRangeException(nameof(length)); - } + if(length < 0 || length > mediaType.Length) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } - if (offset > mediaType.Length - length) - { - throw new ArgumentException(Resources.FormatArgument_InvalidOffsetLength(nameof(offset), nameof(length))); + if (offset > mediaType.Length - length) + { + throw new ArgumentException(Resources.FormatArgument_InvalidOffsetLength(nameof(offset), nameof(length))); + } } - + _parameterParser = default(MediaTypeParameterParser); StringSegment type; diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/Formatters/MediaTypeTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/Formatters/MediaTypeTest.cs index b5bd23dacd..95fa6c6a8d 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/Formatters/MediaTypeTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/Formatters/MediaTypeTest.cs @@ -60,6 +60,16 @@ namespace Microsoft.AspNetCore.Mvc.Formatters Assert.Equal(new StringSegment("utf-8"), result.GetParameter("charset")); } + [Fact] + public void Constructor_NullLength_IgnoresLength() + { + // Arrange & Act + var result = new MediaType("mediaType", 1, length: null); + + // Assert + Assert.Equal(new StringSegment("ediaType"), result.Type); + } + [Fact] public void Constructor_NullMediaType_Throws() {