7.2Blazor WebAssembly

Blazor WebAssembly 应用运行在浏览器的沙箱环境中,无法使用操作系统底层的 TCP 套接字。整个网络栈被替换为基于浏览器 fetch API 的实现,因此依赖于 System.Net.Sockets 的 SocketsHttpHandler 和会调用平台原生网络 API 的 HttpClientHand

HTTP 远程请求支持在 Blazor WebAssembly 客户端应用中使用。以下是配置和使用的详细步骤:

1. 注册 HttpRemote 服务

Startup.csProgram.cs 文件中,注册 HttpRemote 服务并配置 FallbackBaseAddress

cs
builder.Services.AddHttpRemote()    .ConfigureOptions((options, serviceProvider) =>    {        var navigation = serviceProvider.GetRequiredService<NavigationManager>();        options.FallbackBaseAddress = new Uri(navigation.BaseUri);    });

2. 在 _Imports.razor 中引入命名空间

_Imports.razor 文件中,添加 HttpRemote 服务的命名空间:

cs
@using HttpAgent;   // 如果使用 Furion 框架,则使用 @using Furion.HttpRemote;

3. 在 *.razor 文件中使用

*.razor 文件中注入 IHttpRemoteService 并发送 HTTP 远程请求:

cs
@page "/weather"@inject IHttpRemoteService Http// 其他代码...@code {    private WeatherForecast[] forecasts;    protected override async Task OnInitializedAsync()    {        forecasts = await Http.GetAsAsync<WeatherForecast[]>("sample-data/weather.json");    }}

通过以上步骤,您可以在 Blazor WebAssembly 应用中轻松使用 HTTP 远程请求功能,动态获取数据并渲染到页面中。