Метаданные WCF показывают неверный URI службы на HTTPS - PullRequest
0 голосов
/ 24 апреля 2018

Используя .NET 4.7.1 и минимальную конфигурацию WCF, WSDL при обращении по HTTPS показывает HTTP-адрес и показывает неверный хост, если в конфигурации не включен порт 80.

Эта служба должнабыть доступным только по протоколу HTTPS, который в дальнейшем будет применяться правилом брандмауэра.

Моя конфигурация выглядит следующим образом

<system.serviceModel>     
  <behaviors>     
    <serviceBehaviors>  
      <behavior>  
        <serviceMetadata httpsGetEnabled="True"/>   
        <useRequestHeadersForMetadataAddress/>          
      </behavior>  
    </serviceBehaviors>  
  </behaviors>  
</system.serviceModel> 

И результат выглядит так в браузере (демонстрирует неверную схемуи неверный хост. Извините, что я должен заблокировать большую часть этого, но вы должны быть в состоянии получить то, что я говорю ...)

в результате wsdl

Я понимаю, что "useRequestHeadersForMetadataAddress" сообщает WCF, что я действительно хочу, чтобы WSDL находился рядом со службой.Я предположил, что это также должно быть в состоянии справиться с теми же намерениями для схемы.

Есть мысли?

1 Ответ

0 голосов
/ 25 апреля 2018

Моя проблема предполагала, что мне не нужно было указывать конфигурацию привязки. Без конфигурации привязки, я не думаю, что WCF сможет определить, что вам нужны привязки HTTPS, и все проблемы проистекают оттуда.

Так что, к сожалению, мой web.config увеличивается в два раза!

      <basicHttpBinding>
    <binding name="SecureServiceBinding" closeTimeout="00:02:00" openTimeout="00:02:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="20480000" maxBufferSize="10240000" maxReceivedMessageSize="10240000" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" messageEncoding="Text">
      <readerQuotas maxDepth="100" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="2147483647"/>
      <security mode="Transport">
        <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
        <message clientCredentialType="UserName" algorithmSuite="Default"/>
      </security>
    </binding>
  </basicHttpBinding>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...