我正在尝试调用WSDL文件提供的web服务。
将WSDL添加为服务引用后,指向我的计算机上WSDL文件的位置。
使用代码,我尝试将证书分配给web服务,如下所示:
NeqatyService.NeqatyWSAPIPortTypeClient mPortType = new NeqatyWSAPIPortTypeClient();
Byte[] rawData = File.ReadAllBytes(@"c:\cert.p12");
String cert64 = Convert.ToBase64String(rawData);
X509Certificate2 certificates = new X509Certificate2(rawData, "pass", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.UserKeySet);
mPortType.ClientCredentials.ClientCertificate.Certificate = certificates;
调试器在以下行引发错误:
mPortType.ClientCredentials.ClientCertificate.Certificate = certificates;
说明:对象是只读的
我想要注意的是,我过去常常使用SOAPUI调用web服务,提供证书和密码,并且它起作用了。
有没有人能帮我。
发布于 2018-06-06 05:02:20
尝试在绑定配置中将messageEncoding的值修改为"Mtom“。下面是我最近使用的一个配置示例。当值被设置为“Text”时,我得到了这个错误。
<binding name="AWDProcessingServiceBinding" closeTimeout="00:01:00"
openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="655360" maxBufferPoolSize="524288" maxReceivedMessageSize="655360"
messageEncoding="Mtom" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="Certificate" proxyCredentialType="Basic"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
https://stackoverflow.com/questions/50276737
复制相似问题