У меня есть трейд для вызова веб-службы, эта служба нуждается в sgin с использованием сертификации, но когда я вызываю метод GetData, я получаю это исключение
SecurityVersion.WSSecurityJan2004 не поддерживает шифрование заголовка.Заголовок с именем «enterpriseContext» и пространством имен «B2B_client» настроен для шифрования.Рекомендуется использовать SecurityVersion.WsSecurity11 и выше или использовать транспортную безопасность для шифрования полного сообщения.
код:
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12
| SecurityProtocolType.Ssl3;
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(
delegate
{
return true;
});
B2BServiceReference.B2BManagerClient client = new B2BServiceReference.B2BManagerClient();
var objApplicationContext = new B2BServiceReference.EnterpriseContext_Type
{
applicationContext = new B2BServiceReference.ApplicationContext()
{
languageCode = B2BServiceReference.ApplicationContextLanguageCode.en,
msgUID = "w81d4a669874",
version = B2BServiceReference.ApplicationContextVersion.Item10,
}
};
var objGetData = new GetDataRequest();
objGetData.accountNum = "0101000256001";
string responseMsg;
string numberOfReq;
client.ClientCredentials.ServiceCertificate.DefaultCertificate = new X509Certificate2(@"Testingkeys.pfx", "12345678", X509KeyStorageFlags.UserKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
client.ClientCredentials.ClientCertificate.Certificate = new X509Certificate2(@"Testingkeys.pfx", "12345678", X509KeyStorageFlags.UserKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
var response = client.GetData(ref objApplicationContext, objGetData, out responseMsg, out numberOfReq, out objInquireAccountBalanceResponseAccountBalance, out objBusinessException);
веб-конфигурация:
<bindings>
<customBinding>
<binding name="B2BManagerBinding">
<security authenticationMode="MutualCertificate"
messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" />
<textMessageEncoding messageVersion="Soap11" />
<httpsTransport />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="https://xxxx" binding="customBinding"
bindingConfiguration="B2BManagerBinding" contract="B2BServiceReference.B2BManager"
name="B2BManager" behaviorConfiguration="CustomBehavior">
<identity>
<dns value="xxx"/>
</identity>
</endpoint>
</client>
<behaviors>
<endpointBehaviors>
<behavior name="CustomBehavior">
<!--<clientCredentials>
<clientCertificate findValue="xxx" x509FindType="FindBySubjectName"
storeLocation="LocalMachine" storeName="My" />
</clientCredentials>-->
<clientCredentials>
<clientCertificate findValue="xxx" x509FindType="FindBySubjectName"
storeLocation="LocalMachine" storeName="My" />
<serviceCertificate>
<defaultCertificate findValue="xxx" x509FindType="FindBySubjectName"
storeLocation="LocalMachine" storeName="My" />
<authentication certificateValidationMode="None" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>