Это можно сделать с помощью Blazor Client Side. Во-первых, в своем клиентском пакете получите следующий пакет nuget: Microsoft.Extensions.Http
Затем создайте два класса для этого примера (обычно вы используете интерфейс, но класс сам по себе должен работать здесь. Я собираюсь продемонстрировать использование двух разных базовых адресов, чтобы вы знали, что есть разница.
public class GoogleService
{
private readonly HttpClient httpClient;
public GoogleService(HttpClient httpClient)
{
this.httpClient = httpClient;
}
public string GetBaseUrl()
{
return httpClient.BaseAddress.ToString();
}
}
И служба Yahoo:
public class YahooService
{
private readonly HttpClient httpClient;
public YahooService(HttpClient httpClient)
{
this.httpClient = httpClient;
}
public string GetBaseUrl()
{
return httpClient.BaseAddress.ToString();
}
}
Далее, в Program.cs вашей клиентской программы вы можете сделать что-то вроде следующего:
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services.AddHttpClient<GoogleService>(client =>
{
client.BaseAddress = new Uri("https://google.com/");
});
builder.Services.AddHttpClient<YahooService>(client =>
{
client.BaseAddress = new Uri("https://yahoo.com/");
});
await builder.Build().RunAsync();
}
Затем вы можете добавить их в свой интерфейс таким образом и увидеть, что они действительно являются двумя разными внедренными клиентами. :
@page "/"
@inject BlazorHttpClientTest.Client.Clients.GoogleService googleService;
@inject BlazorHttpClientTest.Client.Clients.YahooService yahooService;
<h1>Hello, world!</h1>
<label>Google Address:</label><label>@googleAddress</label>
<label>Yahoo Address:</label><label>@yahooAddress</label>
@code{
string googleAddress;
string yahooAddress;
protected override void OnInitialized()
{
base.OnInitialized();
googleAddress = googleService.GetBaseUrl();
yahooAddress = yahooService.GetBaseUrl();
}
}
И вот так, у вас должно получиться, что оно работает:
Дайте мне знать, если я вам понадоблюсь объясните что-нибудь еще более подробно, в противном случае, отметьте как отвеченный, если это работает для вас.