C#调用HTTPS SOAP服务上传文件触发CardSpaceException错误求助
问题根因
这个CardSpaceException和HTTPS、服务端都没有关系,完全是WCF客户端配置问题:你重新导入WSDL之后,自动生成的客户端绑定配置开启了基于IssuedToken的消息级身份验证,触发了已废弃的CardSpace组件调用,请求还没发出就被客户端拦截报错,和你观察到的抓包无请求、关服务端也报错的现象完全吻合。
修复步骤
- 第一步:修改配置文件(优先推荐)
打开项目的App.config或者Web.config,找到绑定配置节点,调整安全模式:
<bindings> <!-- 如果用的是basicHttpBinding --> <basicHttpBinding> <binding name="你的绑定名称"> <security mode="Transport"> <transport clientCredentialType="None" /> <!-- 完全关闭消息级身份验证 --> <message clientCredentialType="None" /> </security> </binding> </basicHttpBinding> <!-- 如果用的是wsHttpBinding --> <wsHttpBinding> <binding name="你的绑定名称"> <security mode="Transport"> <transport clientCredentialType="None" /> <message clientCredentialType="None" /> </security> </binding> </wsHttpBinding> </bindings>
重点是删除所有clientCredentialType="IssuedToken"的配置,这个就是触发CardSpace的直接原因。
- 第二步:代码层面强制修正(如果不方便改配置)
在创建ImportUploadServiceClient实例之后,调用UploadFile之前添加以下代码,强制禁用CardSpace调用:
using (var client = new ImportUploadServiceClient()) { // 禁用交互式身份验证,直接关闭CardSpace调用入口 client.ClientCredentials.SupportInteractive = false; // 强制修正绑定安全配置 if (client.Endpoint.Binding is BasicHttpBinding basicBinding) { basicBinding.Security.Mode = BasicHttpSecurityMode.Transport; basicBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.None; } else if (client.Endpoint.Binding is WSHttpBinding wsBinding) { wsBinding.Security.Mode = SecurityMode.Transport; wsBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; wsBinding.Security.Message.ClientCredentialType = MessageCredentialType.None; } // 后面保留原有业务代码 var fileName = Path.GetFileName(path); // ... }
- 第三步:优化证书验证配置
你当前写的ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;每次请求都会重复注册,会导致内存泄漏和逻辑异常,建议移到程序启动入口(比如Program.cs的Main方法)全局只注册一次即可。
验证方法
修改完成后运行程序,如果不再抛出CardSpaceException,就算服务端未启动也只会报连接失败类错误,就说明该问题已修复,后续再排查HTTPS连接相关问题即可。
内容的提问来源于stack exchange,提问作者Eardy
相关产品推荐
相关产品推荐

