2009-05-04 32 views
3

我目前有一個帶有CallBack Contract(雙工)的WCF服務,當我使用在我的計算機上使用它的應用程序時,一切正常,但當我從另一臺計算機上嘗試它時,它不會連接。WCF:「無法打開System.ServiceModel.Channels.ClientReliableDuplexSessionChannel」

一旦我切換到使用此wsDualHttpBinding(對於回調),因爲當我使用wsHttpBinding時,一切正常。

爲什麼Web服務不接受來自其他計算機的請求?是否需要修改某些託管設置?


至於日誌,我得到這些:

alt text http://img17.imageshack.us/img17/4628/wcfissue.jpg

開放手術沒有的 00:01:00在規定的超時時間內完成 。分配給該 操作的時間可能是一個 更長的超時的一部分

無法打開System.ServiceModel.Channels.ClientReliableDuplexSessionChannel

斷陷 System.ServiceModel.Channels.ClientReliableDuplexSessionChannel

斷陷 System.ServiceModel.Channels.ServiceChannel

無法打開 System.ServiceModel.Channels.ServiceChannel


港是我的路由器(TCP和UDP)開放,這樣是不是問題。

至於服務屬性,這是我使用的是什麼:

接口:

[ServiceContract(Name = "MusicRepo_DBAccess_Service", 
       CallbackContract = typeof(IOnlineUsersCallback), 
       SessionMode=SessionMode.Required)] 

服務:

[ServiceBehavior(
     ConcurrencyMode=ConcurrencyMode.Reentrant, 
     InstanceContextMode=InstanceContextMode.Single)] 

[更新]

至於Orion Edwards「後:

  • 無防火牆
  • 看點一
  • 是的,我可以,因爲我有端口轉發在我的路由器
  • 我使用IIS來託管服務器。

的事情是,這個問題開始發生的時候,我從wsHttpBinding切換(這是工作的罰款),以wsDualHttpBinding(因爲我需要回調)


[更新]

我現在已經從wsDualHttpBinding切換到NetTcpBinding,出於某種原因,一切工作正常。

我已經使用this article幫我建立託管在IIS和thankully一切工作正常,有回調。

回答

2

我現在已經從wsDualHttpBinding切換到NetTcpBinding,出於某種原因,一切工作正常。

我已經使用this article幫我建立託管在IIS和thankully一切工作正常,有回調。

0

檢查事項:

  • Windows防火牆
  • 您的防病毒產品的防火牆
  • 你可以telnet端口從遠程計算機?
  • 是你的「服務器」下的ASP.NET開發服務器中運行?這將只接受來自本地主機的請求 - 您需要使用ServiceHost自己託管服務器或將其託管在IIS下。
1

如果您發佈的服務器和客戶端的配置設置,這將有助於。

這裏的wsDualHttpBinding從MSDN工作原理摘要(強調雷):

的WSDualHttpBinding提供 同樣支持Web服務協議 作爲WsHttpBinding的,但對於 雙面合同使用。 WSDualHttpBinding 僅支持SOAP安全性,而 需要可靠的消息傳遞。 這 綁定要求客戶端有一個 公共URI,提供了一個回調 端點服務。這是由clientBaseAddress 屬性提供的 。雙綁定暴露了客戶端的 服務 IP地址。客戶端應該使用 安全性來確保它只有 連接到它所信任的服務。

此綁定可用於通過一個或更多的SOAP中介可靠地進行通信 。

默認情況下,該結合產生具有 WS-ReliableMessaging的可靠性, WS-Security的消息的安全性和身份驗證 ,HTTP用於消息 遞送,和一個文本/ XML消息 編碼一個 運行棧。