Мой веб-сервис WCF ссылается на локальные файлы - PullRequest
0 голосов
/ 06 июня 2011

В отличие от веб-служб ASMX, веб-службы WCF, похоже, разбивают WSDL на несколько файлов.

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

например.это один из импортов в моем WSDL

http://alumninetworkservice.hha.test.idc:1315 является внутренним адресом - я не могу получить к нему доступ со стороны сервера.Есть ли способ настроить мой сервис так, чтобы эти ссылки WSDL указывали на их интернет-URL?

Спасибо

РЕДАКТИРОВАТЬ: я вставил параметры конфигурации ниже.

Это на стороне сервера.

  <system.serviceModel>
    <services>
      <service name="Alumni.WebService.IAlumniWebService">
        <endpoint binding="wsHttpBinding"
                  contract="Alumni.WebService.IAlumniWebService">
        </endpoint>
      </service>
    </services>
    <bindings>
      <wsHttpBinding>
        <binding maxReceivedMessageSize="2000000" >
          <readerQuotas  maxStringContentLength="2147483647"   />
          <security mode="Transport">
            <!--<transport clientCredentialType="None" proxyCredentialType="None"
                  realm="" />
            <message clientCredentialType="None" algorithmSuite="Default" />-->
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"  />
          <serviceDebug includeExceptionDetailInFaults="false"/>
          <useRequestHeadersForMetadataAddress />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

1 Ответ

2 голосов
/ 06 июня 2011

Использование useRequestHeadersForMetadataAddress поведения в конфигурации вашего сервиса для преодоления проблемы.По умолчанию WCF всегда использует локальный адрес / DNS-имя, определенное для конечной точки в WSDL.Поведение должно принудительно использовать имя из заголовка входящего хоста (публичный адрес).

<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="true" />
      <useRequestHeadersForMetadataAddress />
    </behavior>
  </serviceBehaviors>
</behaviors>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...