React to options and hosting changes
Uses EnsureRequestServices to force RequestServices to be created
This commit is contained in:
parent
3b19de0e42
commit
86dcbfd0d1
|
|
@ -22,7 +22,7 @@ namespace Microsoft.AspNet.Routing
|
|||
private readonly IServiceProvider _serviceProvider;
|
||||
|
||||
public DefaultInlineConstraintResolver(IServiceProvider serviceProvider,
|
||||
IOptionsAccessor<RouteOptions> routeOptions)
|
||||
IOptions<RouteOptions> routeOptions)
|
||||
{
|
||||
_serviceProvider = serviceProvider;
|
||||
_inlineConstraintMap = routeOptions.Options.ConstraintMap;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNet.Http;
|
||||
using Microsoft.AspNet.RequestContainer;
|
||||
using Microsoft.AspNet.Routing;
|
||||
using Microsoft.AspNet.Routing.Logging;
|
||||
using Microsoft.Framework.DependencyInjection;
|
||||
|
|
@ -34,22 +35,25 @@ namespace Microsoft.AspNet.Builder
|
|||
|
||||
public async Task Invoke(HttpContext httpContext)
|
||||
{
|
||||
EnsureLogger(httpContext);
|
||||
using (_logger.BeginScope("RouterMiddleware.Invoke"))
|
||||
using (RequestServicesContainer.EnsureRequestServices(httpContext))
|
||||
{
|
||||
var context = new RouteContext(httpContext);
|
||||
context.RouteData.Routers.Add(Router);
|
||||
|
||||
await Router.RouteAsync(context);
|
||||
|
||||
if (_logger.IsEnabled(TraceType.Information))
|
||||
EnsureLogger(httpContext);
|
||||
using (_logger.BeginScope("RouterMiddleware.Invoke"))
|
||||
{
|
||||
_logger.WriteValues(new RouterMiddlewareInvokeValues() { Handled = context.IsHandled });
|
||||
}
|
||||
var context = new RouteContext(httpContext);
|
||||
context.RouteData.Routers.Add(Router);
|
||||
|
||||
if (!context.IsHandled)
|
||||
{
|
||||
await Next.Invoke(httpContext);
|
||||
await Router.RouteAsync(context);
|
||||
|
||||
if (_logger.IsEnabled(TraceType.Information))
|
||||
{
|
||||
_logger.WriteValues(new RouterMiddlewareInvokeValues() { Handled = context.IsHandled });
|
||||
}
|
||||
|
||||
if (!context.IsHandled)
|
||||
{
|
||||
await Next.Invoke(httpContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -300,7 +300,7 @@ namespace Microsoft.AspNet.Routing.Tests
|
|||
|
||||
private IInlineConstraintResolver GetInlineConstraintResolver(RouteOptions routeOptions)
|
||||
{
|
||||
var optionsAccessor = new Mock<IOptionsAccessor<RouteOptions>>();
|
||||
var optionsAccessor = new Mock<IOptions<RouteOptions>>();
|
||||
optionsAccessor.SetupGet(o => o.Options).Returns(routeOptions);
|
||||
var serviceProvider = new Mock<IServiceProvider>();
|
||||
serviceProvider.Setup(o => o.GetService(It.Is<Type>(type => type == typeof(ITypeActivator))))
|
||||
|
|
|
|||
|
|
@ -296,12 +296,12 @@ namespace Microsoft.AspNet.Routing.Tests
|
|||
private static IInlineConstraintResolver GetConstraintResolver()
|
||||
{
|
||||
var services = new ServiceCollection { OptionsServices.GetDefaultServices() };
|
||||
services.ConfigureOptions<RouteOptions>(options =>
|
||||
services.Configure<RouteOptions>(options =>
|
||||
options
|
||||
.ConstraintMap
|
||||
.Add("test", typeof(TestRouteConstraint)));
|
||||
var serviceProvider = services.BuildServiceProvider();
|
||||
var accessor = serviceProvider.GetService<IOptionsAccessor<RouteOptions>>();
|
||||
var accessor = serviceProvider.GetService<IOptions<RouteOptions>>();
|
||||
return new DefaultInlineConstraintResolver(serviceProvider, accessor);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1055,7 +1055,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
{
|
||||
var services = new ServiceCollection { OptionsServices.GetDefaultServices() };
|
||||
var serviceProvider = services.BuildServiceProvider();
|
||||
var accessor = serviceProvider.GetService<IOptionsAccessor<RouteOptions>>();
|
||||
var accessor = serviceProvider.GetService<IOptions<RouteOptions>>();
|
||||
return new DefaultInlineConstraintResolver(serviceProvider, accessor);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -823,7 +823,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
{
|
||||
var services = new ServiceCollection { OptionsServices.GetDefaultServices() };
|
||||
var serviceProvider = services.BuildServiceProvider();
|
||||
var accessor = serviceProvider.GetService<IOptionsAccessor<RouteOptions>>();
|
||||
var accessor = serviceProvider.GetService<IOptions<RouteOptions>>();
|
||||
return new DefaultInlineConstraintResolver(serviceProvider, accessor);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -481,7 +481,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
{
|
||||
var services = new ServiceCollection { OptionsServices.GetDefaultServices() };
|
||||
var serviceProvider = services.BuildServiceProvider();
|
||||
var accessor = serviceProvider.GetService<IOptionsAccessor<RouteOptions>>();
|
||||
var accessor = serviceProvider.GetService<IOptions<RouteOptions>>();
|
||||
return new DefaultInlineConstraintResolver(serviceProvider, accessor);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ namespace Microsoft.AspNet.Routing.Tests
|
|||
{
|
||||
var services = new ServiceCollection { OptionsServices.GetDefaultServices() };
|
||||
var serviceProvider = services.BuildServiceProvider();
|
||||
var accessor = serviceProvider.GetService<IOptionsAccessor<RouteOptions>>();
|
||||
var accessor = serviceProvider.GetService<IOptions<RouteOptions>>();
|
||||
return new DefaultInlineConstraintResolver(serviceProvider, accessor);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue