Solace会话创建失败求助:连接发送通知时无法打开会话
连接Solace创建会话失败排查求助
尝试连接Solace发送通知时,调用context.CreateSession(sessionProps, null, null)无法打开指向Solace URL的会话,抛出如下异常,恳请协助排查。
异常信息
抛出异常:Failed to create session
堆栈跟踪
at SolaceSystems.Solclient.Utils.Types.Utilities.GuardAgainstNotOk(ReturnCode returnCode, String message, Boolean includeSdkError, ISolLogger logger) at SolaceSystems.Solclient.Messaging.Native.SessionImpl.InitSession(Session_CreateFuncInfoV2& sessionFuncInfo, IntPtr& opaqueSessionPtr) at SolaceSystems.Solclient.Messaging.Native.SessionImpl..ctor(ContextImpl parentContext, SessionProperties sessionProps, EventHandler`1 messageEventHandler, EventHandler`1 sessionEventHandler) at SolaceSystems.Solclient.Messaging.Native.ContextImpl.CreateSession(SessionProperties props, EventHandler`1 messageEventHandler, EventHandler`1 sessionEventHandler) at Tutorial.TopicPublisher.Run(IContext context, String host) in C:\src\TopicPublisher\TopicPublisher.cs:line 142 at Tutorial.TopicPublisher.Main(String[] args) in C:\src\TopicPublisher\TopicPublisher.cs:line 228 Finished.
使用的代码块
SessionProperties sessionProps = new SessionProperties() { Host = host, VPNName = VPNName, UserName = UserName, Password = Password, ReconnectRetries = DefaultReconnectRetries, SSLClientCertificate = getCertificate(), SSLTrustStoreDir = Convert.ToString(SOLACE_SSL_TRUST_STORE_DIR), SSLValidateCertificate = true, SSLValidateCertificateDate = true, SSLExcludedProtocols = "", AuthenticationScheme = AuthenticationSchemes.CLIENT_CERTIFICATE, }; // Connect to the Solace messaging router Console.WriteLine("Connecting as {0}@{1} on {2}...", UserName, VPNName, host); using (ISession session = context.CreateSession(sessionProps, null, null)) { ReturnCode returnCode = session.Connect(); if (returnCode == ReturnCode.SOLCLIENT_OK) { Console.WriteLine("Session successfully connected."); PublishMessage(session); } else { Console.WriteLine("Error connecting, return code: {0}", returnCode); } }
排查建议
- 证书配置检查
- 验证
getCertificate()返回的客户端证书是否有效,格式是否符合要求(如PEM或DER),确保证书文件路径正确且程序有读取权限 - 确认
SSLTrustStoreDir指向的目录存在,且包含Solace服务器的CA证书,目录权限允许程序访问
- 验证
- 认证参数冲突排查
- 已设置
AuthenticationScheme = AuthenticationSchemes.CLIENT_CERTIFICATE,部分Solace环境下证书认证无需密码,可尝试移除Password配置项后重试
- 已设置
- SSL协议配置优化
SSLExcludedProtocols设为空字符串可能导致使用不安全协议被服务器拒绝,建议明确指定排除的旧协议,例如:SSLExcludedProtocols = "SSLv3,TLSv1.0,TLSv1.1"
- 基础连接参数验证
- 检查
Host格式是否为SSL连接要求的tcps://<host>:<port>,确认端口为Solace SSL默认端口55443或服务器配置的对应端口 - 核实
VPNName、UserName在Solace服务器上已正确配置,且该用户拥有指定VPN的访问权限
- 检查
- 启用详细日志
- 通过Solace SDK的
ContextProperties配置日志级别为LogLevel.Debug,获取更详细的错误细节,定位具体失败原因
- 通过Solace SDK的
内容的提问来源于stack exchange,提问作者Akilaspl
相关产品推荐
相关产品推荐

