Blazor Web App 上不再分配 HttpClient 的基地址

问题描述 投票:0回答:1

此处显示的代码适用于 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/")

                            });
c# https blazor asp.net-core-8
1个回答
0
投票

正如文档所说,对于客户端渲染(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();

            
        }
    }


}

结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.