Отчеты о конечных точках WCF SSL 404, прослушивание конечных точек отсутствует - PullRequest
3 голосов
/ 17 мая 2011

У нас есть веб-сервис WCF, который, к сожалению, должен использовать SOAP 1.1 + SSL, поэтому я использую basicHttpBinding, а не wsHttpBinding. Я считаю, что мой web.config в порядке, поскольку я сравнил его с бесчисленным количеством других в статьях stackoverflow и MSDN. Мне не повезло с другими решениями проблем, потому что все, кажется, используют wsHttpBinding для всех примеров связывания SSL.

Многие предложения по StackOverflow приводят к ошибкам конфигурации сервера, таким как Заголовки SSL , но я подтвердил людям, которые управляют нашим IIS, что привязки портов SSL и заголовки хостов SSL настроены правильно (как насколько мы можем судить). Однако мы используем подстановочный сертификат, , который я прочитал, может усложнить этот процесс, как в этом (удален из-за нового ограничения на количество ссылок на пользователя), хотя мой SSL работает и сеанс зашифрован.

Я надеюсь, что это что-то простое в конфиге, которое мне не хватает, потому что я смотрю на него слишком много часов / дней подряд.

Когда я пытаюсь вызвать службу из WcfTestService.exe или из базового приложения .net, я получаю следующую ошибку.

Конечная точка не прослушивала https: // subdomain.domain.us:8091/SalesService/SalesService.svc что может принять сообщение. Это часто вызвано неправильным адресом или действие SOAP. Смотрите InnerException, если настоящее время, для более подробной информации.

Трассировка стека серверов:
в System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException (WebException webException, запрос HttpWebRequest, HttpAbortReason abortReason) в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan тайм-аут) в System.ServiceModel.Channels.RequestChannel.Request (сообщение-сообщение, время ожидания TimeSpan) в System.ServiceModel.Dispatcher.RequestChannelBinder.Request (сообщение-сообщение, время ожидания TimeSpan) в System.ServiceModel.Channels.ServiceChannel.Call (Строковое действие, односторонний логический тип, Операция ProxyOperationRuntime, Object [] ins, Object [] outs, TimeSpan тайм-аут) в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, ProxyOperationRuntime операция) в System.ServiceModel.Channels.ServiceChannelProxy.Invoke (Шеззаде сообщение)

Исключение переброшено в [0]:
в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (Шеззаде reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, тип Int32) в IServiceRC.RestrictedProduct (String line1) в ServiceRCClient.RestrictedProduct (String line1)

Внутреннее исключение: пульт сервер вернул ошибку: (404) не Найденный. в System.Net.HttpWebRequest.GetResponse () в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan Тайм-аут)

А вот мой web.config

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="SalesService.ServiceRCbehavior">
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata 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="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="ServiceRCbind" closeTimeout="00:01:00" openTimeout="00:01:00"
        receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
        bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
       maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
        messageEncoding="Text" textEncoding="utf-8"
        useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address=""
    binding="basicHttpBinding" bindingConfiguration="ServiceRCbind"
    contract="SalesService.IServiceRC"/>
    </client>
    <services>
      <service behaviorConfiguration="SalesService.ServiceRCbehavior" name="SalesService.ServiceRC">
        <endpoint address="" listenUri="SalesService.svc" binding="basicHttpBinding" contract="SalesService.IServiceRC" bindingConfiguration="ServiceRCbind"/>
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
        <host>
          <baseAddresses>
            <add baseAddress="https://subdomain.domain.us:8091/SalesService/"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true">
      <baseAddressPrefixFilters>
        <!--<add prefix="https://subdomain.domain.us:8091/SalesService/"/>-->
      </baseAddressPrefixFilters>
    </serviceHostingEnvironment>
  </system.serviceModel>

Еще одна вещь, которую я рассмотрел, - это создание пользовательских конечных точек, как в ранее связанном решении, но я не думаю, что моя ситуация конкретно требует этого и только усложнит ситуацию.

Любой вклад / ссылки будут очень признательны.

Редактировать: Здесь - это ссылка на текст wsdl, сгенерированный IIS (только имя домена отредактировано для анонимности)

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