Visual Studio创建SOAP客户端绑定配置错误及证书报错如何解决
解决方案
1. 清理无效配置
你之前添加的<serviceBehaviors>是服务端使用的配置,客户端不会生效,直接删除即可。
2. 绑定端点行为到实际服务端点
你已经添加了关闭服务证书验证的端点行为,需要确保该行为绑定到了调用服务的endpoint节点上:
<endpoint address="你的服务地址" binding="basicHttpBinding" bindingConfiguration="你的绑定配置名称" contract="自动生成的服务契约名" behaviorConfiguration="endpointBehavior" /> <!-- 加上这行关联你写的端点行为 -->
3. 解决DNS身份不匹配问题
两种方案二选一即可:
配置方案
在endpoint节点内部添加identity配置,指定服务端返回的DNS名称:
<endpoint ...> <identity> <dns value="nameB" /> <!-- nameB替换为报错中提到的服务端实际返回的DNS声明值 --> </identity> </endpoint>
代码方案
初始化客户端时手动指定EndpointIdentity:
var serviceAddress = new EndpointAddress( new Uri("http://你的服务地址"), new DnsEndpointIdentity("nameB"), new AddressHeaderCollection() ); // 用自定义的服务地址初始化客户端 var client = new 你的服务客户端类名(serviceAddress);
4. 确认算法配置生效
你在绑定中配置的algorithmSuite="Basic256Sha256"已经对应了你需要的SHA256系列算法,会覆盖默认生成的SHA1配置,不需要手动修改三个默认算法参数。
生产环境建议
当前使用的certificateValidationMode="None"仅适合测试阶段,生产环境建议向服务提供方索要服务端的公钥证书,配置到ServiceCertificate.DefaultCertificate,并将验证模式改回ChainTrust,避免中间人攻击风险。
内容的提问来源于stack exchange,提问作者ITMemberAHE
相关产品推荐
相关产品推荐

