2012-01-19 71 views
1

我是STUCK,並沒有IDEA爲什麼我無法連接到我的WCF!無法從客戶端訪問WCF雙工

詳情:

我有一個雙工WCF,它成功地運行在我的本地窗口的工作。我主機在服務器(IIS - 服務器2008 R2 - 標準),並試圖連接,但得到一個錯誤似乎是一個安全問題,我可以從網絡瀏覽器訪問它,並獲得所有的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:59.0849477

開放手術沒有的 00所分配的超時時間內完成。分配給此操作的時間可能是較長超時的 部分。

我必須提到,我有另一個WCF託管在相同的IIS(不是雙工),具有相同的用戶(服務器用戶名),它的工作原理非常完美。 (我正在使用相同的應用程序輪詢兩個,我也試圖創建新的應用程序池。

如果我通過鏈接「http://xx.xx.xx.xx/_Bridge/_BridgeWcfService.svc」在從我想要運行的應用程序的計算機的網絡瀏覽器,我得到的XML ......如預期。

兩個服務端和客戶端具有安全=「無」

任何想法,爲什麼我不能連接:(?

這裏的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> 
+0

你的服務代理的其他操作是什麼?你可以打電話,而不是打開()? –

+0

否!!!如果我在這裏取消打開,任何操作都拋出相同的異常:「打開操作未在00:00:59.9939996的分配超時內完成。分配給此操作的時間可能是更長的超時。「 – Joseph

回答

1

這聽起來像是一個防火牆問題 - wsDualHttpBinding一旦涉及防火牆就很容易炸燬,因爲它試圖打開從服務器連接到客戶端的連接。我建議使用NetTcpBinding進行雙工通信。

我在這方面的博文here

+0

嗨,我發現這個問題,它只是測試應用程序端的防火牆,它在回撥雙工連接期間阻止來自服務器的收入通道。感謝理查德Blewett 所有的時間,我試圖與服務器玩,而我的本地PC(我只是關閉我的電腦firwale)的問題,它的工作原理。 – Joseph