8.8发送相对地址(内部)请求
创建于 2026 年 8 月 17 日约 2 分钟读完
在 ASP.NET 或 Blazor 等 Web 应用中,发送内部 HTTP 请求时,通常使用相对地址。然而,由于项目启动前无法获取主机地址和端口,无法直接通过 services.AddHttpClient() 配置 BaseAddress。此时,可以通过配置 HttpRemoteOptions 的 FallbackBaseAddress 来实现。
ASP.NET应用
services.AddHttpRemote() .ConfigureOptions((options, serviceProvider) => { var serverAddressesFeature = serviceProvider.GetRequiredService<IServer>().Features.Get<IServerAddressesFeature>()!; options.FallbackBaseAddress = new Uri(serverAddressesFeature.Addresses.FirstOrDefault()); });Blazor WebAssembly应用
services.AddHttpRemote() .ConfigureOptions((options, serviceProvider) => { var navigation = serviceProvider.GetRequiredService<NavigationManager>(); options.FallbackBaseAddress = new Uri(navigation.BaseUri); });通过上述配置,可以发送相对地址(内部)请求,示例如下:
var content = await httpRemoteService.GetAsStringAsync("/user/1"); // 相对地址(内部)在发送相对地址请求时,系统会自动获取 Web 主机启动时的主机地址和端口进行拼接。例如,最终发送的请求地址可能为:https://localhost:5001/user/1。这种方式简化了内部请求的配置,确保在项目启动时动态获取主机地址和端口,从而避免硬编码带来的维护问题。