Skip to content

Commit c4e8af6

Browse files
Don't add service parameters to an endpoint ApiDescriptions (#33728)
Co-authored-by: Stephen Halter <[email protected]>
1 parent 4fb1d85 commit c4e8af6

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

src/Mvc/Mvc.ApiExplorer/src/EndpointMetadataApiDescriptionProvider.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,11 @@ private ApiDescription CreateApiDescription(RouteEndpoint routeEndpoint, string
104104
{
105105
var parameterDescription = CreateApiParameterDescription(parameter, routeEndpoint.RoutePattern);
106106

107+
if (parameterDescription is null)
108+
{
109+
continue;
110+
}
111+
107112
if (parameterDescription.Source == BindingSource.Body)
108113
{
109114
hasJsonBody = true;
@@ -118,10 +123,16 @@ private ApiDescription CreateApiDescription(RouteEndpoint routeEndpoint, string
118123
return apiDescription;
119124
}
120125

121-
private ApiParameterDescription CreateApiParameterDescription(ParameterInfo parameter, RoutePattern pattern)
126+
private ApiParameterDescription? CreateApiParameterDescription(ParameterInfo parameter, RoutePattern pattern)
122127
{
123128
var (source, name) = GetBindingSourceAndName(parameter, pattern);
124129

130+
// Services are ignored because they are not request parameters.
131+
if (source == BindingSource.Services)
132+
{
133+
return null;
134+
}
135+
125136
return new ApiParameterDescription
126137
{
127138
Name = name,

src/Mvc/Mvc.ApiExplorer/test/EndpointMetadataApiDescriptionProviderTest.cs

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -248,20 +248,12 @@ public void AddsFromHeaderParameterAsHeader()
248248
}
249249

250250
[Fact]
251-
public void AddsFromServiceParameterAsService()
251+
public void DoesNotAddFromServiceParameterAsService()
252252
{
253-
static void AssertServiceParameter(ApiDescription apiDescription, Type expectedType)
254-
{
255-
var param = Assert.Single(apiDescription.ParameterDescriptions);
256-
Assert.Equal(expectedType, param.Type);
257-
Assert.Equal(expectedType, param.ModelMetadata.ModelType);
258-
Assert.Equal(BindingSource.Services, param.Source);
259-
}
260-
261-
AssertServiceParameter(GetApiDescription((IInferredServiceInterface foo) => { }), typeof(IInferredServiceInterface));
262-
AssertServiceParameter(GetApiDescription(([FromServices] int foo) => { }), typeof(int));
263-
AssertServiceParameter(GetApiDescription((HttpContext context) => { }), typeof(HttpContext));
264-
AssertServiceParameter(GetApiDescription((CancellationToken token) => { }), typeof(CancellationToken));
253+
Assert.Empty(GetApiDescription((IInferredServiceInterface foo) => { }).ParameterDescriptions);
254+
Assert.Empty(GetApiDescription(([FromServices] int foo) => { }).ParameterDescriptions);
255+
Assert.Empty(GetApiDescription((HttpContext context) => { }).ParameterDescriptions);
256+
Assert.Empty(GetApiDescription((CancellationToken token) => { }).ParameterDescriptions);
265257
}
266258

267259
[Fact]

0 commit comments

Comments
 (0)