Не удалось добавить ссылку на службу в WCF в Visual Studio - PullRequest
0 голосов
/ 27 марта 2019

У меня самый простой сервис WCF (шаблон Visual Studio один), который отлично работает с http, но не работает с https. ниже маленькая деталь.

Вот как это выглядит в IIS.

enter image description here

Вот web.config

<system.serviceModel>
<services>
  <service name="WcfService1.Service1">
    <endpoint address="" binding="wsHttpBinding" contract="WcfService1.IService1" />
    <!--<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>-->
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
      <!-- 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="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<protocolMapping>
  <add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>

Вот браузер, когда я пингую его с ip

enter image description here

вот браузер, когда я пингую его от имени домена.

enter image description here

Все хорошо на этом этапе. Однако, когда я попытался добавить ссылку на сервис в Visual Studio, это не удалось с https, но успешно с http.

это ip one (http)

enter image description here

это доменное имя одно (https)

enter image description here

подробное сообщение об ошибке

enter image description here

Вопрос, который у меня возникает, заключается в том, почему Visual Studio не может овладеть https://tar.tennis.com.au/testwcf/service1.svc и согласен с http://10.21.100.129/testwcf/service1.svc?

, конечно, один - http, а другой - https, но почему у браузера не было проблем с ним?

1 Ответ

0 голосов
/ 27 марта 2019

Нам нужно добавить дополнительную конечную точку сервиса для поддержки привязки https. Есть два способа настроить это, пожалуйста, обратитесь к моему примеру.
1. упрощенная конфигурация

  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpBinding" scheme="http" />
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

2. добавьте конечную точку службы https, которая использует безопасность транспорта.

<system.serviceModel>
    <services >
      <service name="WcfService1.Service1">
        <endpoint address="" binding="basicHttpBinding" contract="WcfService1.IService1"></endpoint>
        <endpoint address="" binding="basicHttpBinding" contract="WcfService1.IService1" bindingConfiguration="https"></endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="https">
          <security mode="Transport">
            <transport clientCredentialType="None"></transport>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

Не стесняйтесь, дайте мне знать, если я могу чем-то помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...