Я пытаюсь подключиться к службе SOAP с помощью инструмента генератора клиента WCF в Visual Studio 2017. Однако, когда я делаю запрос, я получаю эту ошибку:
"Запрос httpне авторизован клиентской схемой аутентификации «Аноним».
Я пытаюсь использовать проверку подлинности сертификата.Это мой App.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<system.serviceModel>
<diagnostics performanceCounters="Default" />
<behaviors>
<endpointBehaviors>
<behavior name="NewBehavior0">
<clientCredentials useIdentityConfiguration="true">
<clientCertificate findValue="portalservicos.jucemg.mg.gov.br"
storeLocation="LocalMachine" storeName="TrustedPeople" x509FindType="FindByIssuerName" />
<serviceCertificate>
<authentication certificateValidationMode="PeerOrChainTrust"
trustedStoreLocation="LocalMachine" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="NewBinding2">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://newsrm.jucemg.mg.gov.br:443/empreendimento/service/ViabilidadePrefeituraWS"
behaviorConfiguration="NewBehavior0" binding="basicHttpBinding"
bindingConfiguration="NewBinding2" contract="ViabilidadePrefeituraWS.ViabilidadePrefeituraWS"
name="ViabilidadePrefeituraWSPort">
</endpoint>
</client>
</system.serviceModel>
</configuration>
Это мой код:
class Program
{
static void Main(string[] args)
{
var ws = new ViabilidadePrefeituraWSClient();
ws.callService("");
}
}
Когда я устанавливаю точку останова, я вижу, что сертификат действительно загружается (ws.ClientCredentials.ClientCertificate
показывает правильный сертификат).Однако почему-то кажется, что сертификат не отправляется или конфигурация каким-то образом не используется, поскольку в ошибке упоминается схема аутентификации «Анонимный».
Я видел этот вопрос ( WCFTestClient HTTP-запрос не авторизован со схемой аутентификации клиента 'Anonymous' ) и другие подобные вопросы, однако ни один из них не касался использования сертификатов для аутентификации.