Skip to content

Commit 18391dd

Browse files
author
N. Taylor Mullen
committed
Revert "Clear route values after middleware invocation."
This reverts commit c54a720.
1 parent e8917fc commit 18391dd

File tree

3 files changed

+27
-63
lines changed

3 files changed

+27
-63
lines changed

src/Http/Routing/src/EndpointRoutingMiddleware.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
using System;
55
using System.Diagnostics;
6+
using System.Runtime.CompilerServices;
67
using System.Threading;
78
using System.Threading.Tasks;
89
using Microsoft.AspNetCore.Http;
9-
using Microsoft.AspNetCore.Http.Features;
1010
using Microsoft.AspNetCore.Routing.Matching;
1111
using Microsoft.Extensions.Logging;
1212

@@ -116,9 +116,6 @@ private async Task SetRoutingAndContinue(HttpContext httpContext)
116116
{
117117
// This allows a second call in a single request (such as from the ErrorHandlerMiddleware) to perform routing again.
118118
httpContext.SetEndpoint(endpoint: null);
119-
120-
var routeValuesFeature = httpContext.Features.Get<IRouteValuesFeature>();
121-
routeValuesFeature?.RouteValues?.Clear();
122119
}
123120
}
124121

src/Http/Routing/test/UnitTests/Builder/EndpointRoutingApplicationBuilderExtensionsTest.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public async Task UseRouting_ServicesRegistered_NoMatch_DoesNotSetFeature()
7474
}
7575

7676
[Fact]
77-
public async Task UseRouting_ServicesRegistered_Match_DoesNotSetFeature()
77+
public async Task UseRouting_ServicesRegistered_Match_DoesNotSetsFeature()
7878
{
7979
// Arrange
8080
var endpoint = new RouteEndpoint(
@@ -104,6 +104,7 @@ public async Task UseRouting_ServicesRegistered_Match_DoesNotSetFeature()
104104
// Assert
105105
var feature = httpContext.Features.Get<IEndpointFeature>();
106106
Assert.NotNull(feature);
107+
Assert.Same(endpoint, httpContext.GetEndpoint());
107108
}
108109

109110
[Fact]

src/Http/Routing/test/UnitTests/EndpointRoutingMiddlewareTest.cs

Lines changed: 24 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -102,26 +102,6 @@ public async Task Invoke_OnCall_SetsEndpointFeatureAndResetsEndpoint()
102102
Assert.Null(endpointFeature.Endpoint);
103103
}
104104

105-
[Fact]
106-
public async Task Invoke_OnCall_SetsEndpointFeatureAndResetsRouteValues()
107-
{
108-
// Arrange
109-
var httpContext = CreateHttpContext();
110-
var initialRouteData = new RouteData();
111-
initialRouteData.Values["test"] = true;
112-
httpContext.Features.Set<IRoutingFeature>(new RoutingFeature()
113-
{
114-
RouteData = initialRouteData,
115-
});
116-
var middleware = CreateMiddleware();
117-
118-
// Act
119-
await middleware.Invoke(httpContext);
120-
121-
// Assert
122-
Assert.Null(httpContext.GetRouteValue("test"));
123-
}
124-
125105
[Fact]
126106
public async Task Invoke_SkipsRoutingAndMaintainsEndpoint_IfEndpointSet()
127107
{
@@ -182,59 +162,45 @@ public async Task Invoke_BackCompatGetRouteValue_ValueUsedFromEndpointFeature()
182162
{
183163
// Arrange
184164
var httpContext = CreateHttpContext();
185-
var nextCalled = false;
186165

187-
var middleware = CreateMiddleware(next: context =>
188-
{
189-
var routeData = httpContext.GetRouteData();
190-
var routeValue = httpContext.GetRouteValue("controller");
191-
var routeValuesFeature = httpContext.Features.Get<IRouteValuesFeature>();
192-
nextCalled = true;
193-
194-
// Assert
195-
Assert.NotNull(routeData);
196-
Assert.Equal("Home", (string)routeValue);
166+
var middleware = CreateMiddleware();
197167

198-
// changing route data value is reflected in endpoint feature values
199-
routeData.Values["testKey"] = "testValue";
200-
Assert.Equal("testValue", routeValuesFeature.RouteValues["testKey"]);
168+
// Act
169+
await middleware.Invoke(httpContext);
170+
var routeData = httpContext.GetRouteData();
171+
var routeValue = httpContext.GetRouteValue("controller");
172+
var routeValuesFeature = httpContext.Features.Get<IRouteValuesFeature>();
201173

202-
return Task.CompletedTask;
203-
});
174+
// Assert
175+
Assert.NotNull(routeData);
176+
Assert.Equal("Home", (string)routeValue);
204177

205-
// Act & Assert
206-
await middleware.Invoke(httpContext);
207-
Assert.True(nextCalled);
178+
// changing route data value is reflected in endpoint feature values
179+
routeData.Values["testKey"] = "testValue";
180+
Assert.Equal("testValue", routeValuesFeature.RouteValues["testKey"]);
208181
}
209182

210183
[Fact]
211184
public async Task Invoke_BackCompatGetDataTokens_ValueUsedFromEndpointMetadata()
212185
{
213186
// Arrange
214187
var httpContext = CreateHttpContext();
215-
var called = false;
216188

217-
var middleware = CreateMiddleware(next: context =>
218-
{
219-
var routeData = httpContext.GetRouteData();
220-
var routeValue = httpContext.GetRouteValue("controller");
221-
var routeValuesFeature = httpContext.Features.Get<IRouteValuesFeature>();
222-
called = true;
223-
224-
// Assert
225-
Assert.NotNull(routeData);
226-
Assert.Equal("Home", (string)routeValue);
189+
var middleware = CreateMiddleware();
227190

228-
// changing route data value is reflected in endpoint feature values
229-
routeData.Values["testKey"] = "testValue";
230-
Assert.Equal("testValue", routeValuesFeature.RouteValues["testKey"]);
191+
// Act
192+
await middleware.Invoke(httpContext);
193+
var routeData = httpContext.GetRouteData();
194+
var routeValue = httpContext.GetRouteValue("controller");
195+
var routeValuesFeature = httpContext.Features.Get<IRouteValuesFeature>();
231196

232-
return Task.CompletedTask;
233-
});
197+
// Assert
198+
Assert.NotNull(routeData);
199+
Assert.Equal("Home", (string)routeValue);
234200

235-
// Act & Assert
236-
await middleware.Invoke(httpContext);
237-
Assert.True(called);
201+
// changing route data value is reflected in endpoint feature values
202+
routeData.Values["testKey"] = "testValue";
203+
Assert.Equal("testValue", routeValuesFeature.RouteValues["testKey"]);
238204
}
239205

240206
[Fact]

0 commit comments

Comments
 (0)