8.4强制 IPv4 或 IPv6 请求
创建于 2026 年 8 月 17 日约 1 分钟读完
通过配置 SocketsHttpHandler 的 ConnectCallback,可强制 HttpClient 使用指定 IP 版本或本地出口地址发起请求,适用于网络策略控制或多网卡环境,,以优化性能或满足网络要求。示例如下:
// 强制 IPv4services.AddHttpClient(string.Empty) .ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler { ConnectCallback = HttpRemoteUtility.IPv4ConnectCallback });// 强制 IPv6services.AddHttpClient(string.Empty) .ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler { ConnectCallback = HttpRemoteUtility.IPv6ConnectCallback });// 默认(自动选择)services.AddHttpClient(string.Empty) .ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler { ConnectCallback = HttpRemoteUtility.UnspecifiedConnectCallback });// 多网卡场景:指定本地出口 IPv4services.AddHttpClient(string.Empty) .ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler { ConnectCallback = (context, token) => HttpRemoteUtility.ConnectWithLocalIPv4(IPAddress.Parse("192.168.0.103"), context, token) });// 多网卡场景:指定本地出口 IPv6services.AddHttpClient(string.Empty) .ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler { ConnectCallback = (context, token) => HttpRemoteUtility.ConnectWithLocalIPv6(IPAddress.Parse("::1"), context, token) });