Невозможно получить доступ к WCF-дуплексу с клиента - PullRequest
1 голос
/ 19 января 2012

Я ХОРОШО и у меня нет ИДЕИ, почему я не могу подключиться к своему WCF !!!

подробности:

У меня есть дуплекс WCF, он успешно работает и работает в моем локальном окне. Я размещаю его на сервере (IIS - server 2008 R2-STANDARD) и пытаюсь подключиться, но получаю сообщение об ошибке, что кажется проблемой безопасности, я могу получить к нему доступ через веб-браузер и получить все xml ....

В моем клиенте я пытаюсь получить к нему доступ следующим образом:

this.myCallbackProxy = new MyCallbackProxy();
  InstanceContext cntx = new InstanceContext(myCallbackProxy);
  this.Proxy = new MyServiceClientProxy(cntx, "WSDualHttpBinding_I_BridgeWCFService");

// Я также пытаюсь добавить следующее, не работает

this.Proxy.ClientCredentials.Windows.ClientCredential.UserName = "YY";
  this.Proxy.ClientCredentials.Windows.ClientCredential.Password = "PP";

Вышеуказанное прошло без ошибок и исключений. то:

try
{
this.Proxy.Open();
}
catch { -> here I get an exception:

Исключение:

Операция открытия не завершена в течение выделенного времени 00: 00: 59,0849477. Время, отведенное для этой операции, могло быть часть более длительного тайм-аута.

Я должен упомянуть, что у меня есть другой WCF, размещенный в том же IIS (не дуплекс), с тем же пользователем (имя пользователя сервера), и он отлично работает. (Я использую один и тот же опрос приложений для обоих, я также пытался создать новый пул приложений.

Если я пропущу ссылку "http://xx.xx.xx.xx/_Bridge/_BridgeWcfService.svc"" в веб-браузере с компьютера, на котором я хочу запустить приложение, я получу XML ... как и ожидалось.

И служба, и клиент имеют безопасность = "none"

Любая идея, почему я не могу подключиться: (?

Здесь App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
  <wsDualHttpBinding>
    <binding name="WSDualHttpBinding_I_BridgeWCFService" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
      maxBufferPoolSize="2147483646" maxReceivedMessageSize="2147483646"
      messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="2147483646"
        maxArrayLength="2147483646" maxBytesPerRead="2147483646" maxNameTableCharCount="2147483646" />
      <reliableSession ordered="true" inactivityTimeout="00:10:00"/>
      <security mode="None"/>
    </binding>
  </wsDualHttpBinding>
</bindings>
<client>
  <endpoint address="http://xx.xx.xx.xx/_Bridge/_BridgeWcfService.svc" 
            binding="wsDualHttpBinding" 
            bindingConfiguration="WSDualHttpBinding_I_BridgeWCFService" 
            contract="_BridgeWcfServiceReference.I_BridgeWCFService" 
            name="WSDualHttpBinding_I_BridgeWCFService">
    <identity>
      <dns value="localhost"/>
    </identity>
  </endpoint>
</client>
  </system.serviceModel>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
  </startup>
</configuration>

1 Ответ

1 голос
/ 22 января 2012

Это звучит как проблема с брандмауэром - wsDualHttpBinding склонен к взрыву, как только брандмауэр подключается, когда он пытается открыть соединение с сервера обратно к клиенту.Я бы посоветовал использовать NetTcpBinding для вашей двусторонней связи.

Я писал об этом здесь

...