Укажите другой адрес конечной точки в WSDL веб-службы WCF. - PullRequest
5 голосов
/ 22 февраля 2011

У меня довольно стандартная служба WCF (размещенная на IIS7), которая генерирует довольно стандартный WSDL при запросе с ?wsdl:

<wsdl:definitions>
  <!-- ... -->
  <wsdl:service>
    <wsdl:port>
      <soap:address location="https://machine/virtual_dir/servicename.svc"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

(скучные биты опущены)

I 'После быстрого и грязного способа изменить адрес, указанный в этом сгенерированном WSDL, на что-то полностью другое, например:

https://othermachine/other_dir/other_service.svc

Какой самый простой способ сделать это?

1 Ответ

10 голосов
/ 22 февраля 2011

Существует несколько подходов, на которые вы можете обратить внимание:

  • WCF поддерживает множество точек расширения, и генерация WSDL является одним из них.Вы можете написать свой собственный генератор WSDL и подключить его к WCF

  • , возможно, более простым способом было бы сгенерировать WSDL, который у вас есть, затем настроить его вручную и поместить этот файл WSDL куда-нибудь инастроить его на обслуживание (вместо WCF, генерирующего WSDL во время выполнения, когда будет запрошено это сделать)

Вы можете настроить параметр №2 с поведением <serviceMetadata>:

<behaviors>
   <serviceBehaviors>
       <behavior name="StaticMetadata">
           <serviceMetadata httpGetEnabled="true"
                externalMetadataLocation="(url path to your static WSDL file)" />
       </behavior>
   </serviceBehaviors>
</behaviors>

Если вы сделаете это, и ваша служба использует такое поведение службы, любые запросы на данные WSDL или MEX будут перенаправляться на тот статический WSDL, который вы предоставили, вместо использования автоматически сгенерированного WSDL, который WCFбудет нормально поставлять.

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