Я вижу, что есть несколько вопросов относительно этой конкретной проблемы. Я потратил полтора дня на то, чтобы попробовать все разные предложения. Никто до сих пор не работал для меня, и я не понимаю, что делать дальше. Поэтому я обращаюсь к обширной базе знаний, найденной здесь, с надеждой, что кто-то увидит проблему и поможет мне. Когда-то, пару лет назад, у меня было все это для меня, несколько компьютеров назад. Но когда мне пришлось перейти на новый компьютер, я не смог заставить его работать тогда или в любое время с тех пор, но смог обойти его. Теперь мне нужно разрешить это для текущего назначения.Клиент WCF Test не может добавить услугу - Не удается получить метаданные
У меня есть SOAP WCF WebService, работающий в IIS (не IIS Express) на моей локальной машине.
Я создал приложение. Основные настройки: .NET Framework v4.0.30319 с интегрированным режимом конвейера. Дополнительные настройки имеют Identity для ApplicationPoolIdentity.
Я создал веб-сайт (не используя веб-сайта по умолчанию.)
У нас есть клиент и услуга самозаверенных сертификаты, которые мы используем для разработки и контроля качества. У меня есть сертификат службы, присвоенный привязке https. Webservice связывается с другой службой wcf через net.tcp.
В основных настройках я определил физический путь к c: \ inetpub \ websitename. Чтобы успешно подключиться, используя тестовые настройки ..., мне пришлось подключиться как конкретный пользователь, используя мой идентификатор и пароль для сетевого домена. Я еще не нашел способ обойти это.
В расширенных настройках ... Приложение Пул настроен на созданный мной пул приложений. Физический путь: c: \ inetpub \ wwwroot \ websitename. Включенные протоколы, настроенные на http, net.tcp.
Я могу успешно просмотреть веб-сайт.
Вот web.config для веб-службы:
<system.serviceModel>
<client>
<endpoint address="net.tcp://10.100.13.28:8102/Acord/201307" behaviorConfiguration="NetTcpCertificatesBehavior" binding="netTcpBinding" bindingConfiguration="NetTcpCertificatesBinding" contract="AcordContract.IAcordService201307" name="AcordEndpoint">
<identity>
<certificateReference findValue="7da522dd75f3fca2687837b7b67e117a8700ec62" isChainIncluded="false" storeLocation="LocalMachine" x509FindType="FindByThumbprint" />
<!--<dns value="localhost" />-->
</identity>
</endpoint>
<endpoint address="net.tcp://qaschedapp:8002/IMS/201210" behaviorConfiguration="NetTcpCertificatesBehavior" binding="netTcpBinding" bindingConfiguration="NetTcpCertificatesBinding" contract="IdentityManagementContract.IIdentityManagementService201210" name="IMSEndpoint">
<identity>
<certificateReference findValue="7da522dd75f3fca2687837b7b67e117a8700ec62" isChainIncluded="false" storeLocation="LocalMachine" x509FindType="FindByThumbprint" />
</identity>
</endpoint>
</client>
<services>
<service name="AcordWebService.AcordWebService" behaviorConfiguration="Visible">
<endpoint address="" binding="basicHttpsBinding" contract="AcordWebService.IAcordWebService201307" bindingConfiguration="BasicHttpsBinding">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="https://10.100.13.28:51448/" />
</baseAddresses>
</host>
<!--binding for clients outside the firewall calling from C# with WCF using certs -->
<endpoint address="net.tcp://10.100.13.28:8122/AcordWebService.svc" binding="netTcpBinding" bindingConfiguration="NetTcpCertificatesBinding" name="NetTcpCertificatesEndpoint" contract="AcordWSContract.IAcordWSService201309">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="NetTcpCertificatesBehavior">
<clientCredentials>
<clientCertificate findValue="631f5a67a9a70bc78540bb809e73fd1dbd00bbeb" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />
<serviceCertificate>
<authentication certificateValidationMode="None" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="Visible">
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" httpGetUrl=""/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceCredentials>
<serviceCertificate findValue="7da522dd75f3fca2687837b7b67e117a8700ec62" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint"/>
<clientCertificate>
<certificate findValue="631f5a67a9a70bc78540bb809e73fd1dbd00bbeb" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint"/>
</clientCertificate>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpsBinding>
<!--binding for clients within the firewall but calling the old style soap service-->
<binding name="BasicHttpsBinding" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpsBinding>
<netTcpBinding>
<binding name="NetTcpCertificatesBinding" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<!--<readerQuotas maxDepth="32" maxStringContentLength="65535" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />-->
<!--<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />-->
<security>
<transport clientCredentialType="Certificate" protectionLevel="EncryptAndSign" />
</security>
</binding>
</netTcpBinding>
</bindings>
<protocolMapping>
<add binding="wsHttpBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
Вот полная ошибка я получаю при попытке добавить службу в тестовый клиент WCF:
Ошибка: невозможно получить метаданные от https://10.100.13.28:51448/AcordWebService.svc Если это служба Windows (R) Communication Foundation, к которой у вас есть доступ, убедитесь, что вы включили публикацию метаданных по указанному адресу. Для получения справки, включающей публикацию метаданных, обратитесь к документации MSDN по адресу http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata. URI ошибки обмена: https://10.100.13.28:51448/AcordWebService.svc Метаданные содержат ссылку, которая не может быть разрешена: 'https://10.100.13.28:51448/AcordWebService.svc'. Не удалось установить доверительные отношения для безопасного канала SSL/TLS с полномочиями «10 .100.13.28: 51448». Основное соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL/TLS. Удаленный сертификат недействителен в соответствии с процедурой валидации. URI ошибки GETTP: https://10.100.13.28:51448/AcordWebService.svc Ошибка при загрузке 'https://10.100.13.28:51448/AcordWebService.svc'. Основное соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL/TLS. Удаленный сертификат недействителен в соответствии с процедурой проверки.
Наконец, чтобы заполнить несколько отверстий в информации:
Любые и вся помощь будет признателен, если я могу, наконец, решить эту проблему.
Заранее спасибо.