1

我们有一个在 Windows 服务上运行的具有多个绑定的 WCF 应用程序,该应用程序在 Intranet 环境中按预期工作,但是当我们将解决方案部署到 Windows azure VM 时,似乎我们所有的服务都运行良好,除了那些使用 wsdualhttpbinding 绑定的服务!! !

我们的服务在端口 8099 上运行,因此我们在 VM 上创建了一个端点,公共和私有端口设置为 8099,我们还暂时禁用了防火墙。我们甚至尝试使用 Azure 网络来建立点到站点 VPN,但它们都不起作用。

我们将基地址设置为http://XXX.cloudapp.net:8099/MYSvc但同样的问题...如果我在托管 azure 服务的同一台计算机上运行客户端应用程序,此解决方案工作正常但是如果我尝试使用另一台机器失败。我什至尝试在同一子网上创建另一个 VM 并从 azure 网络中运行客户端应用程序以复制 Intranet 环境,再次没有成功......

这里复制没有错误,似乎当客户端应用程序到达双工服务时,它一直在等待响应并且不允许用户做任何事情!

是因为流量路由还是....任何建议?我们错过了什么吗?除非没有解决方案,否则我们更喜欢使用 wsdualhttpbinding...

4

1 回答 1

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/");

请参阅此链接 http://msdn.microsoft.com/en-us/library/system.servicemodel.wsdualhttpbinding.clientbaseaddress(v=vs.110).aspx

也在这里: http ://social.msdn.microsoft.com/Forums/vstudio/en-US/e5fca7a5-9a90-48de-a81c-ec2e18b7ae6a/wsdualhttpbinding-and-clients-on-remote-machines

您必须记住,负载均衡器会在一分钟后关闭任何空闲连接。您无法在 Azure 上关闭此行为,因此如果您的进程花费超过一分钟,回调通道将被负载均衡器关闭,并且您会收到超时异常。

于 2013-11-21T06:03:46.467 回答