检索 HttpClient 服务不适用于 Blazor 客户端
Retrieving HttpClient service does not work with Blazor Client
我无法检索服务器在 Blazor
客户端中注入的默认值 HttpClient
。
配置
public void ConfigureServices(IServiceCollection services)
{
try
{
ServiceProvider prov = services.BuildServiceProvider();
var returned = prov.GetRequiredService<HttpClient>();
if (returned == null) //returns null on Blazor Client
{
Console.WriteLine("is null");
}
else Console.WriteLine(not null httpclient);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
P.S
为什么这段代码不能在 Blazor
客户端上运行,而在任何典型的 Asp Net Core
应用程序?
P.S 2 在通过首先将其添加到服务集合然后使用 GetService< >
解决了我给定服务的问题之后,我看到了这个不适用于 HttpClient
。
所以服务器已经在 Client.Startup
中注入了 HttpClient
;为什么我不能找回它?
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<MService>();
}
注意:您不应创建 ServiceProvider。它已经由代码创建。全部
你所要做的就是将你的对象添加到容器中。
顺便说一句,如果您确实创建了一个 ServiceProvider,则其中的 ConfigureServices 方法
它是应该 return 创建的,所以其他代码可以使用它。
不清楚为什么要访问ConfigureServices中的HttpClient服务
方法 !但是您可以执行以下操作:
1.Inject IServiceProvider 并像这样使用它:
@inject IServiceProvider services
@functions {
WeatherForecast[] forecasts;
protected override async Task OnInitAsync()
{
var client = services.GetRequiredService<HttpClient>();
forecasts = await client.GetJsonAsync<WeatherForecast[]>("/sample-data/weather.json");
}
}
从 ConfigureServices 中可访问的服务构建服务提供者
方法:
public void ConfigureServices(IServiceCollection 服务)
{
IServiceProvider Services = services.BuildServiceProvider();
var client = Services.GetRequiredService<HttpClient>();
}
希望这对您有所帮助...
我无法检索服务器在 Blazor
客户端中注入的默认值 HttpClient
。
配置
public void ConfigureServices(IServiceCollection services)
{
try
{
ServiceProvider prov = services.BuildServiceProvider();
var returned = prov.GetRequiredService<HttpClient>();
if (returned == null) //returns null on Blazor Client
{
Console.WriteLine("is null");
}
else Console.WriteLine(not null httpclient);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
P.S
为什么这段代码不能在 Blazor
客户端上运行,而在任何典型的 Asp Net Core
应用程序?
P.S 2 在通过首先将其添加到服务集合然后使用 GetService< >
解决了我给定服务的问题之后,我看到了这个不适用于 HttpClient
。
所以服务器已经在 Client.Startup
中注入了 HttpClient
;为什么我不能找回它?
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<MService>();
}
注意:您不应创建 ServiceProvider。它已经由代码创建。全部 你所要做的就是将你的对象添加到容器中。 顺便说一句,如果您确实创建了一个 ServiceProvider,则其中的 ConfigureServices 方法 它是应该 return 创建的,所以其他代码可以使用它。
不清楚为什么要访问ConfigureServices中的HttpClient服务 方法 !但是您可以执行以下操作: 1.Inject IServiceProvider 并像这样使用它:
@inject IServiceProvider services
@functions {
WeatherForecast[] forecasts;
protected override async Task OnInitAsync()
{
var client = services.GetRequiredService<HttpClient>();
forecasts = await client.GetJsonAsync<WeatherForecast[]>("/sample-data/weather.json");
}
}
从 ConfigureServices 中可访问的服务构建服务提供者 方法:
public void ConfigureServices(IServiceCollection 服务) {
IServiceProvider Services = services.BuildServiceProvider(); var client = Services.GetRequiredService<HttpClient>();
}
希望这对您有所帮助...