Невозможно получить конфигурацию WCF для работы с https - PullRequest
0 голосов
/ 02 августа 2011

Я просмотрел много разных вопросов и ответов по этой проблеме, но все еще не могу найти правильное решение. У меня есть веб-сервис, к которому я подключаюсь через код. Веб-сервис запущен и работает на компьютере разработчика. Я использую IIS 7. Я могу подключиться к своему сервису через IE по адресам http и https. Из кода я могу получить доступ к http, но я получаю сообщение об ошибке 404 нет конечной точки прослушивания при попытке доступа через https. Кажется, это было бы просто, но я явно что-то упускаю.

SERVER web.config выглядит так: (только относительные части)

<system.serviceModel>
    <diagnostics>
      <messageLogging logEntireMessage="true" logMessagesAtServiceLevel="true"
        logMessagesAtTransportLevel="true" />
      <endToEndTracing activityTracing="true" />
    </diagnostics>
    <services>
      <service behaviorConfiguration="behaviorAction" name="CI.PCI.ServiceImplementations.SPPService">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="HostBinding"
          contract="CI.PCI.ServiceContracts.ISPPService" listenUri="https://cisppdev.children.org/sppservices/sppservices.svc" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="behaviorAction">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="SafenetTokenServiceSoap11Binding" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:30:00" sendTimeout="00:30:00"
          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
          maxBufferSize="327680" maxBufferPoolSize="524288" maxReceivedMessageSize="327680"
          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
          useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="Transport">
            <transport clientCredentialType="None" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
        <binding name="HostBinding" receiveTimeout="00:30:00" sendTimeout="00:30:00"
          bypassProxyOnLocal="true" maxBufferSize="327680" maxReceivedMessageSize="327680">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="Transport" />
        </binding>
      </basicHttpBinding>
    </bindings>
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>


From the client code I am dynamically creating a connection which basically goes like this:

BasicHttpBinding binding = new BasicHttpBinding();
url = Settings1.Default.DevURL; -- (https://cisppdev.children.org/sppservices/sppservices.svc)
binding.Security.Mode = BasicHttpSecurityMode.Transport;
EndpointAddress ep = new EndpointAddress(url);

                binding.OpenTimeout = new TimeSpan(0, 10, 0);
                binding.CloseTimeout = new TimeSpan(0, 10, 0);
                binding.ReceiveTimeout = new TimeSpan(0, 15, 0);
                binding.SendTimeout = new TimeSpan(0, 15, 0);
                binding.MaxBufferSize = 327680;
                binding.MaxReceivedMessageSize = 327680;
                binding.MaxBufferPoolSize = 524288;
                binding.TransferMode = TransferMode.Buffered;


                ChannelFactory<ServiceContracts.ISPPService> factory = new ChannelFactory<ServiceContracts.ISPPService>(binding, ep);

                factory.Open();

                ServiceContracts.ISPPService channel = factory.CreateChannel();

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

Спасибо

1 Ответ

0 голосов
/ 03 августа 2011

Если вы хотите использовать https, вам необходимо предоставить сертификат, прочитайте эти ссылки:

http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/6ffe535f-d20e-4bc0-a94a-4bc18a1206c0/

http://msdn.microsoft.com/en-us/library/ms733768.aspx

...