2009-05-04 56 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消息 编码一个 运行栈。