GOOGLE ADS

miércoles, 20 de abril de 2022

En la aplicación predeterminada Visual Studio Blazor WebAssembly, ¿cómo crearía HttpClient con IHttpClientFactory?

Navegar por la web me lleva a pensar que la aplicación Wasm predeterminada emplea una mala práctica al crear un HttpClient en lugar de usar IHttpClientFactory. Entonces, ¿cómo lo hago correctamente?
FetchData.razor usa HttpClient de esta manera:

@inject HttpClient Http
...
protected override async Task OnInitializedAsync()
{
forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("sample-data/weather.json");
}

Y la inyección de dependencia se configura en Program.cs con esta línea:

builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

Parece que no debería ser demasiado difícil hacer el cambio, pero no puedo resolverlo.


Solución del problema

... que la aplicación Wasm predeterminada emplea malas prácticas al crear un HttpClient

Está Mal. Esa 'mala práctica' proviene del HttpClient normal que usa un socket TCP debajo de las cubiertas y es una preocupación válida en el resto de dotnet.

Pero Blazor Wasm no puede usar sockets TCP de todos modos, toda la comunicación tiene que pasar por JavaScript. Por lo tanto, Blazor Wasm HttpClient es diferente. Ni siquiera está registrado como Scoped. Está perfectamente bien crear nuevas instancias sobre la marcha.

No hay comentarios:

Publicar un comentario

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...