Служба отдыха WCF не имеет доступа по протоколу HTTPS (ERR_CONNECTION_RESET) - PullRequest
0 голосов

У меня есть рабочий сервис WCF (поверх win.service). Сервис работает через HTTP, но когда я переключаю конфигурацию на HTTPS, я получаю ERR_CONNECTION_RESET.

Я уже много узнал об этой проблеме, но не решил ее.

Помогите пожалуйста! :)

Мой сервис

[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
    public interface IViberService
    {
        [OperationContract]
        [WebInvoke(Method = "POST",
                    ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped,
                    UriTemplate = "GetData")]
        Task GetData();


        [OperationContract]
        [WebInvoke(Method = "GET",
               ResponseFormat = WebMessageFormat.Json,
               BodyStyle = WebMessageBodyStyle.Wrapped,
               UriTemplate = "Init")]
        Task Init();
    }

    public class ViberService : IViberService
    {   public async Task Init()
        {
           ....
        }

        public async Task GetData()
        {
          ....
        }
    }

Моя конфигурация serviceModel

    <system.serviceModel>
        <client>
            <endpoint address="https://......Service.svc"
                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITelegramService"
                contract="......ITelegramService" name="BasicHttpBinding_ITelegramService" />
        </client>
      <services>
        <!-- This section is optional with the new configuration model  
           introduced in .NET Framework 4. -->

        <service name="Microsoft.ServiceModel.Samples.ViberService"
                 behaviorConfiguration="ViberServiceBehavior" >
          <host>
            <baseAddresses>
              <add baseAddress="https://localhost:8001/ServiceModelSamples/ViberService"/>
            </baseAddresses>
          </host>
          <endpoint address=""
                    binding="webHttpBinding"
   contract="Microsoft.ServiceModel.Samples.IViberService" behaviorConfiguration="webBehavior" bindingConfiguration="WebHttpBindingConfig"/>
          <endpoint address="mex"
                    binding="mexHttpsBinding"
                    contract="IMetadataExchange" />

        </service>
      </services>
      <bindings>
        <basicHttpBinding>
          <binding name="BasicHttpBinding_ITelegramService">
            <security mode="Transport" />
          </binding>
        </basicHttpBinding>
        <webHttpBinding>
          <binding name="WebHttpBindingConfig">
            <security mode="Transport"/>
          </binding>
        </webHttpBinding>
      </bindings>
      <behaviors>
        <endpointBehaviors>
          <behavior name="webBehavior">
            <webHttp  />
          </behavior>
        </endpointBehaviors>
        <serviceBehaviors>
          <behavior name="ViberServiceBehavior">
            <serviceMetadata httpsGetEnabled="true" httpGetEnabled="false"/>
            <serviceDebug includeExceptionDetailInFaults="true"/>
          </behavior>
        </serviceBehaviors>
      </behaviors>
    </system.serviceModel>
</configuration>

Заранее спасибо!

Тот же код отлично работает под HTPP

UPD: я использую данные из контекста в GetData.

string _data = OperationContext.Current.RequestContext.RequestMessage.ToString();

Может быть, проблема в этом

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