8.4强制 IPv4 或 IPv6 请求

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

通过配置 SocketsHttpHandlerConnectCallback,可强制 HttpClient 使用指定 IP 版本或本地出口地址发起请求,适用于网络策略控制或多网卡环境,,以优化性能或满足网络要求。示例如下:

cs
// 强制 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)    });