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

StackExchange.Redis连接Azure Redis Cache报无法解析主机端口异常

异常原因

抛出这个异常的核心逻辑是:StackExchange.Redis的配置解析模块没有正确识别你传入字符串里的配置分隔符,把整段完整连接串当成了仅包含主机:端口的端点地址,传给了只接受端点格式参数的EndPointCollection.Add()方法,最终因为整串不符合host:port格式触发参数校验错误。
常见触发场景:

  • 从文档、Azure门户复制连接串时带入了全角逗号、零宽空格、转义残留字符等不可见特殊符号,导致解析器无法识别逗号作为配置项分隔符
  • 项目存在NuGet包冲突:比如同时引用了普通版和强命名版的StackExchange.Redis,或者包版本过旧存在解析逻辑bug
  • 连接串里的密码部分包含未转义的特殊字符,打断了解析器的分段逻辑
修复方案

按以下优先级操作,第一种方案可以100%绕开字符串解析问题,优先使用:

  1. 改用强类型ConfigurationOptions构造连接配置,完全跳过字符串解析流程,示例代码:
var redisOptions = new ConfigurationOptions
{
    EndPoints = { "mycompanyname.redis.cache.windows.net:6380" },
    Password = "替换为你的Azure Redis实际访问密钥",
    Ssl = true,
    AbortOnConnectFail = false,
    // Azure Redis默认要求TLS 1.2及以上版本,显式指定避免协议协商失败
    SslProtocols = System.Security.Authentication.SslProtocols.Tls12
};
builder.Services.AddSingleton(ConnectionMultiplexer.Connect(redisOptions));
  1. 如果要保留纯字符串连接的写法,不要直接复制粘贴原有连接串,手动逐字符输入完整配置,确保所有分隔逗号为英文半角,前后无多余空格、特殊字符,标准格式如下:
    mycompanyname.redis.cache.windows.net:6380,password=你的Azure Redis访问密钥,ssl=True,abortConnect=False,sslprotocols=tls12
    
  2. 检查项目NuGet引用,删除重复的StackExchange.Redis相关包(不要同时存在StackExchange.Redis和StackExchange.Redis.StrongName引用),升级到最新稳定版后重新编译运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 10:21:26