此处显示的代码适用于 ASP.NET Core 8.0 Blazor 服务器端项目,但不适用于 Blazor Web 应用程序(该应用程序不会以所选基地址启动,该地址应为 https://localhost :7122/Identity/Account/Login?ReturnUrl=%2F )我在 Microsoft 文档 上阅读了这篇文章,但我希望我不必走那条路,并且有一个更简单的解决方案,因为我的项目都是服务器端只是。
program.cs
builder.Services
.AddScoped(sp => new HttpClient
{
BaseAddress = new Uri("https://localhost:7122/")
});
正如文档所说,对于客户端渲染(CSR),其中包括采用CSR的Interactive WebAssembly组件和Auto组件,通过在客户端项目(BlazorApp)的Program文件中注册的预配置HttpClient进行调用.客户):
builder.Services.AddScoped(sp =>
new HttpClient
{
BaseAddress = new Uri(builder.Configuration["FrontendUrl"] ?? "https://localhost:5002")
});
因此,如果您使用的是服务器端渲染(当前您正在使用的SSR),其中包括预渲染和交互式的Server组件、预渲染的WebAssembly组件以及预渲染或采用SSR的Auto组件,则使用HttpClient进行调用注册在服务器项目的程序文件中。
如下:
builder.Services.AddHttpClient("localtest", httpClient =>
{
httpClient.BaseAddress = new Uri("https://localhost:7047");
});
用途:
@code{
protected override async Task OnInitializedAsync()
{
var httpClient = _httpClientFactory.CreateClient("localtest");
var httpResponseMessage = await httpClient.GetAsync(
"WeatherForecast");
if (httpResponseMessage.IsSuccessStatusCode)
{
using var contentStream =
await httpResponseMessage.Content.ReadAsStreamAsync();
}
}
}
结果: