我们有一个在Windows服务上运行多个绑定的WCF应用程序,该应用程序在Intranet环境中按预期工作,但是当我们将解决方案部署到windows azure VM时,似乎我们所有的服务都运行良好,除了那些使用wsdualhttpbinding的服务捆绑 !!!
我们的服务在端口8099上运行,因此我们在VM上创建了一个端点,公共和私有端口设置为8099,我们暂时也禁用了防火墙。我们甚至尝试使用Azure网络建立一个指向站点VPN的点,但它们都没有工作。
我们将基地址设置为http://XXX.cloudapp.net:8099/MYSvc,但同样的问题...... 如果我在托管azure上的服务的同一台机器上运行客户端应用程序,这个解决方案工作正常,但是如果我尝试使用另一台机器则失败。我甚至尝试在同一个子网上创建另一个虚拟机,并在azure网络中运行客户端应用程序来复制内联网环境,再次没有成功......
此处没有错误复制,当客户端应用程序到达双工服务时,它会一直等待响应并且不允许用户执行任何操作!
是因为交通路由还是....任何建议?我们错过了什么吗? 我们更喜欢使用wsdualhttpbinding,除非没有解决方案...
答案 0 :(得分:1)
由于没有人回答这个问题,并且由于我找到了解决方案的事实,我想在这里分享一下,以防有人需要它。
关于azure wsdualhttpbinding因路由问题无法找到客户端地址,因此即使您使用VPN,问题仍然存在。
解决方法是使用ClientBaseAddress和你的wsdualhttpbinding绑定一样:
WSDualHttpBinding dualBinding = new WSDualHttpBinding();
EndpointAddress endptadr = new EndpointAddress("http://XXX:12000/DuplexTestUsingCode/Server");
dualBinding.ClientBaseAddress = new Uri("http://XXX:8000/DuplexTestUsingCode/Client/");
您必须记住,负载平衡器会在一分钟后关闭所有空闲连接。您无法在Azure上关闭此行为,因此如果您的进程需要超过一分钟,则负载均衡器将关闭回调通道,并且您将获得超时异常。