Неверный URL в гиперссылке WSDL при использовании WCF (https) - PullRequest
6 голосов
/ 20 сентября 2010

Моя служба WCF работает с HTTPS. Она отображает Infopage, но URL-адрес ниже «Чтобы проверить эту службу ... со следующим синтаксисом:» равен:

svcutil.exe https://servername.group.service.com/MyService.svc?wsdl (полный адрес сервера)

Вместо правильного URL https://my.service.com/MyService.svc?wsdl (назначенный заголовок хоста), как я могу заставить его отображать правильный URL (<URL of the Service> + ?wsdl)?

<services>
  <service name="MyService" behaviorConfiguration="MyServer.MyServiceBehavior">
    <endpoint binding="basicHttpBinding" bindingConfiguration="basicHttpBigStrings" contract="IMyService">
    </endpoint>
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="MyService.MyServiceBehavior">
      <serviceCredentials>
        <serviceCertificate findValue="my.service.com" x509FindType="FindBySubjectName"/>
      </serviceCredentials>
      <serviceMetadata httpsGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <basicHttpBinding>
    <binding name="basicHttpBigStrings">
      <security mode="Transport">
        <transport clientCredentialType="None"/>
      </security>
      <readerQuotas maxStringContentLength="1048576" />
    </binding>
  </basicHttpBinding>
</bindings>

Я уже пытался изменить <serviceMetadata httpsGetEnabled="true"/> на <serviceMetadata httpsGetEnabled="true" httpsGetUrl="https://my.service.com/MyService.svc"/>, но он просто говорит: «Регистрация для URI уже существует https://my.service.com/MyService.svc"

Ответы [ 2 ]

4 голосов
/ 23 ноября 2010

Вы указали, что установили заголовок хоста. Это установлено для SSL или просто Http. Помните, что в интерфейсе IIS нет полей для установки заголовка узла для SSL. вам потребуется использовать сценарии администратора (IIS 6.0) или netsh.exe для более поздней версии IIS.

0 голосов
/ 12 ноября 2010

Вы можете найти фон по этому вопросу в следующем StackOverflow ссылка - первое, что я бы попробовал (они дают несколько разных сценариев, которые немного более сложны), было бы установить URI прослушиванияОпределение конечной точки сервиса.Когда у меня были проблемы с получением адреса WSDL прямо в моем приложении, я смог установить его, чтобы исправить это.В этом случае я просто пытался исправить схему (мы стояли за BIGIP, и он заканчивал SSL, поэтому схема должна была быть https, даже если WCF на стороне сервера думал, что она получает http).

<endpoint address="https://www.sslloadbalancer.com" binding="someBinding" contract="IMyServiceInterface" listenUri="http://www.servicehost.com" ...  />

Я верю, что это исправит WSDL для вас

...