Skip to content

Commit 592559c

Browse files
Prevent infinite recursion. Fixes #1017
1 parent f29831e commit 592559c

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

src/AspNetCore/WebApi/src/Asp.Versioning.Http/ApiVersioningFeature.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,7 @@ public IReadOnlyList<string> RawRequestedApiVersions
3434
{
3535
if ( rawApiVersions is null )
3636
{
37-
var reader = context.RequestServices.GetService<IApiVersionReader>()
38-
?? ApiVersionReader.Combine(
39-
new QueryStringApiVersionReader(),
40-
new UrlSegmentApiVersionReader() );
41-
37+
var reader = context.RequestServices.GetService<IApiVersionReader>() ?? ApiVersionReader.Default;
4238
rawApiVersions = reader.Read( context.Request );
4339
}
4440

src/Common/src/Common/ApiVersionReader.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ namespace Asp.Versioning;
1616
#endif
1717
public static class ApiVersionReader
1818
{
19+
private static IApiVersionReader? @default;
20+
21+
/// <summary>
22+
/// Gets the default API version reader.
23+
/// </summary>
24+
/// <value>The default <see cref="IApiVersionReader"/>.</value>
25+
public static IApiVersionReader Default => @default ??= Combine( new QueryStringApiVersionReader(), new UrlSegmentApiVersionReader() );
26+
1927
/// <summary>
2028
/// Returns a new API version reader that is a combination of the specified set.
2129
/// </summary>

src/Common/src/Common/ApiVersioningOptions.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ namespace Asp.Versioning;
66
#if NETFRAMEWORK
77
using System.Net;
88
#endif
9-
using static Asp.Versioning.ApiVersionReader;
109

1110
/// <summary>
1211
/// Represents the possible options for API versioning.
@@ -73,7 +72,7 @@ public partial class ApiVersioningOptions
7372
#endif
7473
public IApiVersionReader ApiVersionReader
7574
{
76-
get => apiVersionReader ??= Combine( new QueryStringApiVersionReader(), new UrlSegmentApiVersionReader() );
75+
get => apiVersionReader ??= Versioning.ApiVersionReader.Default;
7776
set => apiVersionReader = value;
7877
}
7978

0 commit comments

Comments
 (0)