Skip to content

Commit c6fd6f2

Browse files
Chris Martinezcommonsensesoftware
authored andcommitted
Fix resolution of media type parameter name. Fixes #528
1 parent 0836da3 commit c6fd6f2

File tree

5 files changed

+18
-7
lines changed

5 files changed

+18
-7
lines changed

src/Common/Versioning/IApiVersionReaderExtensions.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ namespace Microsoft.AspNetCore.Mvc.Versioning
55
#endif
66
{
77
using System;
8+
using System.Collections.Generic;
9+
using System.Linq;
810
using static ApiVersionParameterLocation;
911

1012
internal static class IApiVersionReaderExtensions
@@ -25,15 +27,24 @@ internal static string GetMediaTypeVersionParameter( this IApiVersionReader read
2527

2628
sealed class DescriptionContext : IApiVersionParameterDescriptionContext
2729
{
28-
internal string ParameterName { get; private set; }
30+
readonly StringComparer comparer = StringComparer.OrdinalIgnoreCase;
31+
readonly List<string> parameterNames = new List<string>();
32+
33+
internal string ParameterName => parameterNames.Count == 0 ? default : parameterNames[0];
34+
35+
internal IReadOnlyList<string> ParameterNames => parameterNames;
2936

3037
internal bool HasMediaTypeApiVersion { get; private set; }
3138

3239
public void AddParameter( string name, ApiVersionParameterLocation location )
3340
{
34-
if ( HasMediaTypeApiVersion |= location == MediaTypeParameter )
41+
var mediaTypeParameter = location == MediaTypeParameter && !string.IsNullOrEmpty( name );
42+
43+
HasMediaTypeApiVersion |= mediaTypeParameter;
44+
45+
if ( mediaTypeParameter && !parameterNames.Contains( name, comparer ) )
3546
{
36-
ParameterName = name;
47+
parameterNames.Add( name );
3748
}
3849
}
3950
}

src/Microsoft.AspNet.WebApi.Versioning/Microsoft.AspNet.WebApi.Versioning.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<VersionPrefix>3.0.2</VersionPrefix>
4+
<VersionPrefix>3.0.3</VersionPrefix>
55
<AssemblyVersion>3.0.0.0</AssemblyVersion>
66
<TargetFramework>net45</TargetFramework>
77
<AssemblyTitle>Microsoft ASP.NET Web API Versioning</AssemblyTitle>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Add API version parameter to Content-Type (#484)
1+
Fix resolution of media type parameter name (#528)

src/Microsoft.AspNetCore.Mvc.Versioning/Microsoft.AspNetCore.Mvc.Versioning.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<VersionPrefix>3.1.4</VersionPrefix>
4+
<VersionPrefix>3.1.5</VersionPrefix>
55
<AssemblyVersion>3.1.0.0</AssemblyVersion>
66
<TargetFramework>netstandard2.0</TargetFramework>
77
<NETStandardImplicitPackageVersion>2.0.0-*</NETStandardImplicitPackageVersion>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Ensure implicitly versioned ActionModel has associated ControllerModel (#519)
1+
Fix resolution of media type parameter name (#528)

0 commit comments

Comments
 (0)