2009-10-01 3 views
2

У меня возникла проблема с использованием веб-службы (C# .net) из службы WCF. Ошибка, которую я получаю, это EndPointNotFoundException «Код ошибки TCP10061: соединение не может быть сделано, потому что целевая машина активно отказалась от него»Вызов webservice из службы WCF

Я написал модульный тест, чтобы проверить, могу ли я отправить запрос в веб-службу, и это хорошо работает [Единичный тест использует ту же конфигурацию привязки, что и моя служба 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. Не могли бы вы предложить.

+0

Если вы хотите быстро проверить, используйте WcfTestClient http://msdn.microsoft.com/en-us/library/bb552364.aspx. Если это работает, тогда ваш код должен работать. – Philippe

ответ

1

Вы упомянули «webservice» и «службу WCF» - так что «вебсервис» - это веб-сервис ASMX старого стиля?

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

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

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

MARC

+0

Привет, я думаю, что это как-то связано с безопасностью. Нуниторы работают нормально, так как он работает под учетной записью пользователя Windows. Есть ли способ настроить мою службу WCF для использования учетных данных Windows при вызове другой службы? Конфигурация конечной точки с помощью nunit и WCF srevice одинакова. – Balaji

+0

Вот почему я спрашивал: как выглядит ваш конфиг? Какую проверку подлинности ожидает отдаленный веб-сервис? –

+0

Я добавил раздел конфигурации, не могли бы вы быстро взглянуть и предложить, если настройки неверны? – Balaji

0

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

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

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

Надеется, что это помогает

Шираза

Смежные вопросы