我目前有一个带有回调合同(双工)的 WCF 服务,当我在我的计算机上使用使用它的应用程序时,一切正常,但是当我从另一台计算机尝试它时,它无法连接。
一旦我切换到使用它wsDualHttpBinding
(用于回调),这些问题就开始出现,因为当我使用时wsHttpBinding
一切正常。
为什么 Web 服务不接受来自其他计算机的请求?是否需要修改一些托管设置?
至于日志,我得到了这些:
替代文字 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的帖子:
- 没有防火墙
- 见第 1 点
- 是的,我可以,因为我的路由器上转发了端口
- 我正在使用 IIS 来托管服务器。
问题是,当我从wsHttpBinding
(工作正常)切换到wsDualHttpBinding
(因为我需要回调)时,这个问题就开始发生了
[更新]
我现在已经切换wsDualHttpBinding
到NetTcpBinding
并且出于某种原因,一切正常。
我使用这篇文章来帮助我在 IIS 上设置托管,谢天谢地,一切都按预期工作,带有回调。