Consumir servicio acotado desde Singleton
Mientras consumo un objeto con ámbito desde un singleton, no obtengo ningún error
Según el siguiente artículo, debería recibir un error tan pronto como comience mi servicio:
https://dotnetcoretutorials.com/2018/03/20/cannot-consume-scoped-service-from-singleton-a-lesson-in-asp-net-core-di-scopes/
Dependencia Registrada:
builder.Services.AddScoped<ILogger, AppLogs>();
builder.Services.AddSingleton<ICacheFactory>(x =>
{
string cacheConnectionString = "xyz";
return new CacheFactory(cacheConnectionString, x.GetService<ILogger>());
});
Consumido:
public class Function1
{
private readonly ICacheFactory cacheProvider;
public Function1(ICacheFactory cacheProvider) {
this.cacheProvider = cacheProvider;
}
[FunctionName("Function1")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
var result = await this.cacheProvider.GetResultsAsync<IEnumerable<string>>("abc").ConfigureAwait(false);}
}
¿Cuándo genera un problema una inyección de ámbito en un singleton?
davy.ai
Según el artículo enlazado, se produce un problema cuando un ámbito se inyecta en un singleton y el singleton se crea antes del ámbito. En ese caso, el singleton no tiene acceso al servicio de ámbito ya que aún no ha sido creado, lo que resulta en un error.