Вызов веб-сервиса из сервиса WCF - PullRequest
2 голосов
/ 01 октября 2009

У меня проблема с использованием веб-службы (c # .net) из службы WCF. Я получаю сообщение об ошибке EndPointNotFoundException «Код ошибки TCP 10061: не удалось установить соединение, поскольку целевая машина активно отказала ему» *

Я написал тестовый модуль, чтобы проверить, могу ли я отправить запрос в веб-сервис, и он работал нормально. [В модульном тесте используется та же конфигурация привязки, что и в моей службе WCF]

Веб-служба и служба WCF (клиент) имеют привязку basichttp.

Кто-нибудь сталкивался с подобной проблемой при вызове веб-службы из службы WCF?

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

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="DataService" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
                    <message clientCredentialType="UserName" algorithmSuite="Default"/>
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://10.22.33.67/Service/DataService.asmx" binding="basicHttpBinding" 
            bindingConfiguration="DataService" contract="Service.DataService" name="DataService"/>
    </client>
    <services>
        <service name="TestToConsumeDataService.WCFHost.Service1" behaviorConfiguration="TestToConsumeDataService.WCFHost.Service1Behavior">
            <!-- Service Endpoints -->
            <endpoint address="" binding="basicHttpBinding" contract="TestToConsumeDataService.WCFHost.IService1">
                <!-- 
          Upon deployment, the following identity element should be removed or replaced to reflect the 
          identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
          automatically.
      -->
                <identity>
                    <dns value="localhost"/>
                </identity>
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="TestToConsumeDataService.WCFHost.Service1Behavior">
                <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                <serviceMetadata httpGetEnabled="true"/>
                <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>

В проекте модульного тестирования также используется тот же раздел модели сервиса, и он работает. Единственная проблема - при вызове службы из другой службы WCF. Не могли бы вы предложить.

Ответы [ 2 ]

1 голос
/ 01 октября 2009

Вы упомянули "веб-сервис" и "сервис WCF" - значит, "веб-сервис" - это веб-сервис ASMX старого стиля ??

Как размещается ваша служба WCF? В IIS? У вас есть необходимая информация о конечной точке для веб-службы, которую вы вызываете из WCF, внутри вашего web.config ??

Можете ли вы показать нам свои соответствующие настройки, например, <system.serviceModel> раздел вашего web.config (или app.config, если вы самостоятельно размещаете службу WCF), пожалуйста?

Ошибка означает, что либо веб-служба не прослушивает адрес, который вы используете, либо у вас нет прав доступа к нему. Вам не хватает безопасности или чего-то еще?

1010 * MARC *

0 голосов
/ 01 октября 2009

Похоже, есть какая-то конфигурация, для которой вам нужно вызвать ваш веб-сервис.

  • Эта конфигурация верна в файле конфигурации вашего модульного теста.
  • Но это неверно или отсутствует в файле конфигурации вашей службы WCF.

Если у вас есть две библиотеки DLL, где одна вызывает другую, тогда используется файл конфигурации первой библиотеки DLL. Однако при переходе по прыжку WCF это файл конфигурации службы WCF, который вступает во владение.

Надеюсь, это поможет

Шираз

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