Nella classe Startup
, è possibile aggiungere servizi nel metodo ConfigureServices
. Quando voglio ottenere un determinato servizio, ci sono 2 proprietà nell'istanza HttpContext, ApplicationServices
e RequestServices
. Mi chiedo la differenza tra loro e come usarli correttamente.Qual è la differenza tra ApplicationServices e RequestServices in Microsoft.AspNet.Http.HttpContext?
Modifica # 1: Per esempio, in classe di avvio:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ICache, InProcessCache>(); // Line 1
services.AddSingleton<ISystemClientResolver>(SystemClientResolver.CreateInstance); // Line 2
services.AddScoped<SystemClient>(); // Line 3
services.AddRvcBusiness(); // Line 4
services.AddMvc(); // Line 5
}
Se io non chiamo app.UseRequestServices()
in Configure(IApplicationBuilder app)
metodo, posso ottenere SystemClient
esempio Context.ApplicationServices.GetService(typeof(SystemClient))
, ma non è per ogni singolo richiesta, sembra single e Context.RequestServices
è nullo. Una volta che io chiamo app.UseRequestServices()
come questo:
public void Configure(IApplicationBuilder app)
{
app.UseRequestServices();
// ...
}
Context.RequestServices
non è nulla e posso ottenere SystemClient
esempio Context.RequestServices.GetService(typeof(SystemClient))
e l'istanza è base per-richiesta.
Nota: 'ApplicationServices' non fa più parte di' HttpContext'. –