You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure CosmosClient持续抛出Socket权限异常问题求助

解决方案

1. 禁用Cosmos SDK的实例元数据查找

在CosmosClientOptions中添加DisableInstanceMetadataLookup = true,直接阻止SDK主动请求Azure实例元数据服务,这是解决该报错最直接的方法:

builder.Register(
    x =>
    {
        var cosmosDbOptions = x.Resolve<CosmosDbOptions>();
        var socketsHttpHandler = x.Resolve<SocketsHttpHandler>();
        return new CosmosClient(cosmosDbOptions.ConnectionString, new CosmosClientOptions()
        {
            ConnectionMode = ConnectionMode.Direct,
            PortReuseMode = PortReuseMode.PrivatePortPool,
            IdleTcpConnectionTimeout = new TimeSpan(0, 23, 59, 59),
            SerializerOptions = new CosmosSerializationOptions()
            {
                PropertyNamingPolicy = CosmosPropertyNamingPolicy.CamelCase
            },
            HttpClientFactory = () => new HttpClient(socketsHttpHandler, disposeHandler: false),
            // 禁用元数据查找
            DisableInstanceMetadataLookup = true
        });
    })
.AsSelf()
.SingleInstance();

2. 调整SocketsHttpHandler配置(可选)

如果禁用元数据查找后仍有异常,可在SocketsHttpHandler中添加禁用代理、禁止自动重定向的配置,避免元数据请求被错误路由:

builder.Register(c => new SocketsHttpHandler()
{
    PooledConnectionLifetime = TimeSpan.FromMinutes(10),
    MaxConnectionsPerServer = 20,
    // 禁用代理
    UseProxy = false,
    // 禁止自动重定向
    AllowAutoRedirect = false
}).As<SocketsHttpHandler>().SingleInstance();

3. 切换连接模式(备选)

若Direct模式在Durable Function环境下存在兼容性问题,可尝试切换到Gateway模式:

// 修改ConnectionMode配置项
ConnectionMode = ConnectionMode.Gateway

内容的提问来源于stack exchange,提问作者freak_geek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:15:38