2009-11-13 5 views
0

У меня есть простое веб-приложение ASP.NET, которое использует WCF-клиент, чтобы поговорить с простой службой Windows, поддерживаемой WCF.WCF, клиент не может подключиться, если на той же машине

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

Теперь, когда мы развернулись к QA, мы получаем «Соединение сокетов было прервано. 'исключение бросается незамедлительно. По какой-то причине наш веб-сервер QA не может разговаривать с нашим сервером приложений QA через наш клиент/услугу WCF. я могу пинговать сервер QA приложение с веб-сервера я могу телнет сервер QA приложения с веб-сервера я могу подключиться к HTTP WSDL на сервере QA приложений с веб-сервера

И, я могу подключиться FINE для моей службы QA из моей локальной/визуальной студии !!!

Итак, почему мое приложение QA ASP.NET не работает с моей службой Windows WCF QA? Я попробовал и всячески, и до сих пор не идут ...

Вот мой System.ServiceModel раздел на клиенте:

<system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <binding name="BigFileBinding"> 
      <!-- required to receive files greater then default size of 16kb --> 
      <readerQuotas maxArrayLength="5242880"/> 
     </binding> 
     </netTcpBinding> 
    </bindings> 
    <client> 
     <endpoint address="net.tcp://NJQACNET01:58887/PriceService" 
      binding="netTcpBinding" 
      contract="IPriceService" 
      bindingConfiguration="BigFileBinding"/> 
     </endpoint> 
    </client> 
    </system.serviceModel> 

Вот мой system.serviceModel раздел на сервисе:

<system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <!-- required to receive files greater then default size of 16kb --> 
     <binding name="BigFileBinding" 
       maxReceivedMessageSize="5242880"> 
      <readerQuotas maxArrayLength="5242880"/> 
     </binding> 
     </netTcpBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="MetaDataBehavior" name="RK.Pricing.PricingPortal.MarketableSecuritiesService.PriceService"> 
     <endpoint address="net.tcp://localhost:58887/PriceService" binding="netTcpBinding" 
      contract="RK.Pricing.PricingPortal.MarketableSecuritiesService.IPriceService" bindingConfiguration="BigFileBinding" /> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:58889/PriceService" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="MetaDataBehavior"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 

Благодарим за помощь! Приветствуется.

ответ

1

Это, вероятно, проблема с брандмауэром, используемый вами порт блокируется между сервером QA ASP.Net и сервером QA WCF.

Вы можете проверить это, используя команду telnet.

+0

Я могу подключиться к одному и тому же порту с сервера на сервер приложений без проблем ... ТАКЖЕ, я просто попытался установить «security mode =« none »на клиентском и сервере, и теперь все работает. .. но по какой цене ..? ..... – dferraro

+0

Стоимость будет заключаться в том, что любой клиент может позвонить вам. Отключение защиты не рекомендуется. Ознакомьтесь с рекомендациями, на которые я ссылался в своем ответе. –

+0

@dferraro, какими были ваши настройки безопасности, прежде чем вы их не изменили? Является ли сервер ASP.net в том же домене? Какой пользовательский контекст является вызовом с сервера ASP.Net на сервер WCF? –

1

Я думаю, что это, вероятно, проблема безопасности. Имейте в виду, что по умолчанию NetTcpBinding использует проверку подлинности Windows.

Вы должны просмотреть и опубликовать опубликованные рекомендации here, если это возможно.