为了账号安全,请及时绑定邮箱和手机立即绑定

WCF 客户端:第一次调用失败,第二次调用成功

WCF 客户端:第一次调用失败,第二次调用成功

C#
拉莫斯之舞 2021-06-03 08:36:40
我有一个 REST 网络服务,它使用 WCF 客户端调用外部 SOAP 网络服务。此 REST Web 服务托管在我们测试环境中的 IIS 中。当调用 REST web 服务时,后者调用外部 web 服务(使用 WCF 客户端),在 IIS 中重新启动 REST web 服务后,WCF 客户端的第一次调用会抛出SecurityNegotiationException。对 REST Web 服务的第二次调用以及间接调用和所有后续调用均成功。为了说明这一点,这里有一张图片:此SecurityNegotiationException如下所示:System.ServiceModel.Security.SecurityNegotiationException:无法为具有权限“X”的 SSL/TLS 建立安全通道。---> System.Net.WebException:请求被中止:无法创建 SSL/TLS 安全通道。端点和绑定如下(通过添加服务引用生成,稍微修改了customBinding):<endpoint address="https://..." binding="customBinding" bindingConfiguration="MyBinding" contract="WS_..." name="MyEndpoint" />...<customBinding>    <binding name="MyBinding">      <textMessageEncoding messageVersion="Soap11" />      <security authenticationMode="UserNameOverTransport" />      <httpsTransport requireClientCertificate="true" />    </binding></customBinding>调用外部webservice的代码:MyEndpointClient client = new MyEndpointClient("MyEndpoint");client.ClientCredentials.UserName.UserName = authInfo.Username;client.ClientCredentials.UserName.Password = authInfo.Password;client.ClientCredentials.ClientCertificate.Certificate = authInfo.Certificate;var result = client.requestInformation(parameters); // This fails the first time after IIS restart.authInfo.Certificate 正在加载如下:authInfo.Certificate = new X509Certificate2(certificateBytes, certificatePassword);
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

出于某种原因,这仅发生在一台测试服务器上,而不发生在其他服务器上。对外部 SOAP 网络服务调用的跟踪日志显示内部函数AcquireCredentialsHandle失败并显示错误代码0X8009030D。


经过更多调查,我发现了安装在相关服务器上的几个证书(来自外部 SOAP 网络服务)。它们似乎与对外部 SOAP 网络服务的调用相冲突。删除这些证书后,第一次调用现在成功了!


更新:我再次遇到同样的问题,但现在在我的开发机器上。清除证书无济于事,所有请求都失败并出现相同的SecurityNegotiationException。为了解决这个问题,我为 HTTP 100 状态代码添加了一个传递,并强制连接到 TLS 1.2:


ServicePointManager.Expect100Continue = true;

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

请注意,我在初始化 WCF 客户端(问题帖子中的MyEndpointClient)之前添加了此代码,以确保 WCF 客户端使用这些设置。


查看完整回答
反对 回复 2021-06-05
  • 1 回答
  • 0 关注
  • 353 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信