Reacting to ApplicationServices removal from HttpContext

This commit is contained in:
John Luo 2015-11-19 09:35:23 -08:00
parent 04c30c8bb7
commit 73fd257844
3 changed files with 7 additions and 73 deletions

View File

@ -96,8 +96,6 @@ namespace Microsoft.AspNet.Hosting.Internal
Server.Start(
async httpContext =>
{
httpContext.ApplicationServices = _applicationServices;
if (diagnosticSource.IsEnabled("Microsoft.AspNet.Hosting.BeginRequest"))
{
diagnosticSource.Write("Microsoft.AspNet.Hosting.BeginRequest", new { httpContext = httpContext });

View File

@ -21,23 +21,7 @@ namespace Microsoft.AspNet.Hosting.Internal
throw new ArgumentNullException(nameof(applicationServices));
}
ApplicationServices = applicationServices;
}
public IServiceProvider ApplicationServices
{
get
{
return _appServices;
}
set
{
if (value == null)
{
throw new ArgumentNullException(nameof(value));
}
_appServices = value;
}
_appServices = applicationServices;
}
public IServiceProvider RequestServices
@ -46,7 +30,7 @@ namespace Microsoft.AspNet.Hosting.Internal
{
if (!_requestServicesSet)
{
_scope = ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope();
_scope = _appServices.GetRequiredService<IServiceScopeFactory>().CreateScope();
_requestServices = _scope.ServiceProvider;
_requestServicesSet = true;
}

View File

@ -15,7 +15,6 @@ using Microsoft.AspNet.Http.Features;
using Microsoft.AspNet.Http.Features.Internal;
using Microsoft.AspNet.Http.Internal;
using Microsoft.AspNet.Testing.xunit;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.DiagnosticAdapter;
@ -59,16 +58,17 @@ namespace Microsoft.AspNet.TestHost
public void Configure(IApplicationBuilder app)
{
var applicationServices = app.ApplicationServices;
app.Run(async context =>
{
await context.Response.WriteAsync("ApplicationServicesEqual:" + (context.ApplicationServices == Services));
await context.Response.WriteAsync("ApplicationServicesEqual:" + (applicationServices == Services));
});
}
}
[Fact]
public async Task CustomServiceProviderReplacesApplicationServices()
public async Task CustomServiceProviderSetsApplicationServices()
{
var server = new TestServer(TestServer.CreateBuilder().UseStartup<CustomContainerStartup>());
string result = await server.CreateClient().GetStringAsync("/path");
@ -124,22 +124,6 @@ namespace Microsoft.AspNet.TestHost
Assert.Equal("Found:True", result);
}
[Fact]
public async Task SettingApplicationServicesOnFeatureToNullThrows()
{
var server = TestServer.Create(app =>
{
app.Run(context =>
{
var feature = context.Features.Get<IServiceProvidersFeature>();
Assert.Throws<ArgumentNullException>(() => feature.ApplicationServices = null);
return context.Response.WriteAsync("Success");
});
});
string result = await server.CreateClient().GetStringAsync("/path");
Assert.Equal("Success", result);
}
[Fact]
public async Task CanSetCustomServiceProvider()
{
@ -147,16 +131,11 @@ namespace Microsoft.AspNet.TestHost
{
app.Run(context =>
{
context.ApplicationServices = new ServiceCollection()
.AddTransient<TestService>()
.BuildServiceProvider();
context.RequestServices = new ServiceCollection()
.AddTransient<TestService>()
.BuildServiceProvider();
var s1 = context.ApplicationServices.GetRequiredService<TestService>();
var s2 = context.RequestServices.GetRequiredService<TestService>();
var s = context.RequestServices.GetRequiredService<TestService>();
return context.Response.WriteAsync("Success");
});
@ -199,7 +178,6 @@ namespace Microsoft.AspNet.TestHost
{
app.Run(context =>
{
Assert.Equal(appServices, context.ApplicationServices);
Assert.Equal(appServices, context.RequestServices);
return context.Response.WriteAsync("Success");
});
@ -236,7 +214,6 @@ namespace Microsoft.AspNet.TestHost
{
app.Run(context =>
{
Assert.NotNull(context.ApplicationServices);
Assert.NotNull(context.RequestServices);
return context.Response.WriteAsync("Success");
});
@ -246,31 +223,6 @@ namespace Microsoft.AspNet.TestHost
Assert.Equal("Success", result);
}
public class EnsureApplicationServicesFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return builder =>
{
builder.Run(context => {
Assert.NotNull(context.ApplicationServices);
return context.Response.WriteAsync("Done");
});
};
}
}
[Fact]
public async Task ApplicationServicesShouldSetBeforeStatupFilters()
{
var server = TestServer.Create(app => { },
services => services.AddTransient<IStartupFilter, EnsureApplicationServicesFilter>());
string result = await server.CreateClient().GetStringAsync("/path");
Assert.Equal("Done", result);
}
[Fact]
public async Task CanAccessLogger()
{