baseAddress, предоставленные ServiceHost, не являются Https - PullRequest
0 голосов
/ 23 июля 2010

Я пытаюсь настроить службу WCF на HTTPS. Я настроил поведение и службы с соответствующими адресами, но не могу понять, почему адрес, который предоставляется узлу службы, по-прежнему является http.

Я использую поведение здесь:

    <behavior name="RequestProcessorBehavior">
      <serviceCredentials>
        <userNameAuthentication 
          userNamePasswordValidationMode="Custom" 
          customUserNamePasswordValidatorType="ServiceAuthentication,Services"/>
      </serviceCredentials>
      <serviceMetadata httpsGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
      <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
      <serviceThrottling maxConcurrentCalls="500" maxConcurrentInstances="500"/>
    </behavior>

Сервисный элемент здесь

<service name="MyNamespace.WcfRequestProcessor" behaviorConfiguration="RequestProcessorBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="https://xxxxxxxxxxxxxx/Services/"/>
          </baseAddresses>
        </host>
        <!-- 
          Use the listenUri attribute if this causes a problem with the load balancer.
          The url of the listenUri should be that of the load balancer
        -->
        <endpoint address=""
                  bindingNamespace="https://xxxxxxxxxxxxxx/Services/"
                  contract="MyNamespace.IWcfRequestProcessor"
                  binding="basicHttpBinding"
                  bindingConfiguration="RequestProcessorBinding">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="wsHttpBinding"
                  bindingNamespace="https://xxxxxxxxxxxxxx/Services/"
                  contract="MyNamespace.IWcfRequestProcessor"
                  binding="wsHttpBinding"
                  bindingConfiguration="wsBinding">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
      </service>

Когда я добавляю точку останова в конструктор ServiceHost, я вижу, что параметр baseAddresses содержит только один адрес, и это http, а не https. Когда я пытаюсь посетить страницу svc, я получаю следующую ошибку, и я понимаю, почему она показывает это, но я не вижу, что я могу изменить, чтобы сделать baseAddress, который передается конструктору ServiceHost https, а не http.

Не удалось найти базовый адрес, который соответствует схеме https для конечной точки с привязкой BasicHttpBinding. Схемы зарегистрированных базовых адресов [HTTP].

Любая помощь будет принята с благодарностью.


ОБНОВЛЕНИЕ # 1

Раздел конфигурации привязки, который я оставил вне исходного вопроса:

<bindings>
  <basicHttpBinding>
    <binding name="RequestProcessorBinding" maxReceivedMessageSize="2147483647" receiveTimeout="00:30:00" sendTimeout="00:30:00">
      <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647"/>
      <security mode="Transport">
        <transport clientCredentialType="None"/>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

В настоящее время это находится в среде разработки и в IIS6. Это внутри сайта по умолчанию.

1 Ответ

1 голос
/ 23 июля 2010

Вы работаете на IIS или самостоятельно размещены? Если это IIS, вам нужно правильно настроить IIS для SSL. Кроме того, вы не упоминаете, как выглядит ваша конфигурация привязки, но ее также необходимо настроить для обеспечения безопасности транспорта.

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