Я пытаюсь создать клиент в Visual Studio 2019, который будет использовать службу SOAP, защищенную с помощью идентификатора/пароля и сертификата.
Я создал проект SoapUI, импортировав WSDL, а затем настроил параметры ws-security в проекте так, чтобы у него была исходящая подпись, и импортировал хранилище ключей с сертификатом, который я хочу использовать. Наконец, я установил аутентификацию в запросе на использование Basic, установил идентификатор/пароль и выбрал свою исходящую подпись в раскрывающемся списке Исходящие WSS. Сделав все это, я могу прекрасно вызывать службу с помощью пользовательского интерфейса Soap.
В Visual Studio я создал новый консольный проект, добавил ссылку на подключенную службу, используя тот же WSDL, и теперь пытаюсь написать код. Я попытался установить учетные данные, выполнив
System.ServiceModel.BasicHttpsBinding myBinding = new System.ServiceModel.BasicHttpsBinding();
System.ServiceModel.EndpointAddress myAddress = new System.ServiceModel.EndpointAddress("url");
ServiceReference1.CaseTypeClient myClient = new ServiceReference1.CaseTypeClient(myBinding, myAddress);
myClient.ClientCredentials.UserName.UserName = "ID";
myClient.ClientCredentials.UserName.Password = "Pass";
System.Security.Cryptography.X509Certificates.X509Certificate2 myCert = new System.Security.Cryptography.X509Certificates.X509Certificate2("CertFileName", "CertPass");
myClient.ClientCredentials.ClientCertificate.Certificate = myCert;
Однако, когда я вызываю метод, я получаю сообщение об ошибке от службы, говорящее: «XmlException: несвязанный префикс, используемый в полном имени« wsse: FailedAuthentication »».
Каков правильный способ сделать то, что я пытаюсь выполнить?