8.8发送相对地址(内部)请求

创建于 2026 年 8 月 17 日约 2 分钟读完

ASP.NETBlazorWeb 应用中,发送内部 HTTP 请求时,通常使用相对地址。然而,由于项目启动前无法获取主机地址和端口,无法直接通过 services.AddHttpClient() 配置 BaseAddress。此时,可以通过配置 HttpRemoteOptionsFallbackBaseAddress 来实现。

  • ASP.NET 应用
cs
services.AddHttpRemote()    .ConfigureOptions((options, serviceProvider) =>    {        var serverAddressesFeature = serviceProvider.GetRequiredService<IServer>().Features.Get<IServerAddressesFeature>()!;        options.FallbackBaseAddress = new Uri(serverAddressesFeature.Addresses.FirstOrDefault());    });
  • Blazor WebAssembly 应用
cs
services.AddHttpRemote()    .ConfigureOptions((options, serviceProvider) =>    {        var navigation = serviceProvider.GetRequiredService<NavigationManager>();        options.FallbackBaseAddress = new Uri(navigation.BaseUri);    });

通过上述配置,可以发送相对地址(内部)请求,示例如下:

cs
var content = await httpRemoteService.GetAsStringAsync("/user/1");  // 相对地址(内部)

在发送相对地址请求时,系统会自动获取 Web 主机启动时的主机地址和端口进行拼接。例如,最终发送的请求地址可能为:https://localhost:5001/user/1。这种方式简化了内部请求的配置,确保在项目启动时动态获取主机地址和端口,从而避免硬编码带来的维护问题。