public async Task InnerServiceCanResolveServicesOutsideIsolationViaHttpContext() {
// Arrange
var builder = new WebHostBuilder()
.ConfigureServices(services => {
// Allow the isolated environment to resolve
// the value service defined at the global level.
services.AddScoped(provider => {
var accessor = provider.GetRequiredService<IHttpContextAccessor>();
var container = (IServiceScope) accessor.HttpContext.Items[typeof(IServiceProvider)];
return container.ServiceProvider.GetRequiredService<ValueService>();
});
})
.Configure(app => {
app.Isolate(
// Configure the isolated pipeline.
map => map.Run(async context => {
var service = context.RequestServices.GetRequiredService<ValueService>();
await context.Response.WriteAsync(service.Value);
}),
// Configure the isolated services.
services => services.AddSingleton(new ValueService("Dummy")));
});
var server = new TestServer(builder);
var client = server.CreateClient();
// Act
var response = await client.GetStringAsync("/");
// Assert
Assert.Equal("Dummy", response);
}