WCF双工通信外网无法连接
2013-04-28 21:27
232 查看
由于项目需要把WCF部署外网,在公司完成程序,测试没有问题,wsDualHttpBinding 双工通信
客户端配置:
服务器端配置:
内网测试没有问题,部署到外网,就报超时异常operation may have been a portion of a longer timeout
检查服务器和客户端防火墙是否关闭,防火墙都关闭,依然连接失败;
检查端口是否被占用,更换端口,错误依然;
发现服务的网页上元数据地址使用的是计算机名,而计算机名称在外网是无法访问,于是搜索,在网上发现一篇文章:http://www.cnblogs.com/lensso/archive/2011/08/01/2124095.html
远程客户端由于元数据地址主机名为服务器计算机名而无法解析WCF服务元数据的解决办法
安装文章方法解决的了元数据的地址解析问题。
但是客户端依然无法连接服务端,再次
/article/5414638.html
http://social.msdn.microsoft.com/Forums/en-US/wcfzhchs/thread/0d663107-b47e-464b-82dc-6f191c484870
所以在外网的情况下,程序能正常的工作必须确保:1.客户端没安装IIS6以下的版本,即80端口要被空出来;2是在违反1的条件下,80端口被占用,让你的clientBaseAddress能被服务器所识别。
于是设置地址,客户端正常连接上服务端,问题解决。
客户端配置:
<system.serviceModel> <bindings> <wsDualHttpBinding> <binding name="hhh_IBLLServiceContract" closeTimeout="00:01:00" openTimeout="00:51:00" receiveTimeout="00:50:00" sendTimeout="00:51:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Mtom" textEncoding="utf-8" useDefaultWebProxy="true"> <readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> <reliableSession ordered="true" inactivityTimeout="00:50:00" /> <security mode="None"> <message clientCredentialType="Windows" negotiateServiceCredential="true" /> </security> </binding> </wsDualHttpBinding> </bindings> <client> <endpoint address="http://192.168.9.29:8081/Service1.svc" binding="wsDualHttpBinding" bindingConfiguration="hhh_IBLLServiceContract" contract="IBLLServiceContract" name="hhh_IBLLServiceContract"> </endpoint> </client> </system.serviceModel>
服务器端配置:
<system.serviceModel> <bindings> <wsDualHttpBinding> <binding name="hhh" messageEncoding="Mtom"> <security mode="None"/> </binding> </wsDualHttpBinding> </bindings> <services> <service behaviorConfiguration="serviceBehavior" name="RNOP.WCF.Service.BLLService"> <endpoint address="Service1.svc" binding="wsDualHttpBinding" bindingName="hhh" bindingConfiguration="hhh" contract="RNOP.WCF.ServiceInterface.IBLLServiceInterface" > </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" > </endpoint> <host> <baseAddresses> <add baseAddress="http://192.168.9.180:8081/" /> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors > <behavior name="serviceBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="False" /> <dataContractSerializer maxItemsInObjectGraph="2147483647" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel>
内网测试没有问题,部署到外网,就报超时异常operation may have been a portion of a longer timeout
检查服务器和客户端防火墙是否关闭,防火墙都关闭,依然连接失败;
检查端口是否被占用,更换端口,错误依然;
发现服务的网页上元数据地址使用的是计算机名,而计算机名称在外网是无法访问,于是搜索,在网上发现一篇文章:http://www.cnblogs.com/lensso/archive/2011/08/01/2124095.html
远程客户端由于元数据地址主机名为服务器计算机名而无法解析WCF服务元数据的解决办法
安装文章方法解决的了元数据的地址解析问题。
但是客户端依然无法连接服务端,再次
/article/5414638.html
http://social.msdn.microsoft.com/Forums/en-US/wcfzhchs/thread/0d663107-b47e-464b-82dc-6f191c484870
所以在外网的情况下,程序能正常的工作必须确保:1.客户端没安装IIS6以下的版本,即80端口要被空出来;2是在违反1的条件下,80端口被占用,让你的clientBaseAddress能被服务器所识别。
于是设置地址,客户端正常连接上服务端,问题解决。
相关文章推荐
- VMware workstation NAT方式无法连接外网的问题
- 外网无法连接Kafka集群(报错:NoBrokersAvailable)
- Ubuntu桥接无法连接外网问题
- [实战]Ubuntu桥接无法连接外网问题
- Linux无法连接外网
- 无法连接外网时如何安装Python Package
- Linux下PPTPD搭建***服务器连接后无法上外网及619错误的解决办法
- VMware workstation NAT方式无法连接外网[自己NAT方式的网关设置错误,导致ping www.baidu.com不通]
- Hyper-v修改网卡之后虚拟机无法连接外网的问题
- VMWARE NAT模式下虚拟机集群节点无法连接外网问题解决
- VMware workstation NAT方式无法连接外网的问题解决
- 如果在外网的情况下使用Xmanager无法连接到Linux上
- linux 无法连接内网、外网
- centos 设置网络参数正常无法连接外网问题
- 网络连接正常但无法上网(能ping通外网DNS)解决方法
- VMware workstation NAT方式无法连接外网
- 问题6--内网可以连接,无法访问外网
- SELinux导致无法访问外网,PHP连接MySQL异常Can't connect to MySQL server、redis程序访问提示Redis server went away的解决方法
- WebSocket部署服务器但外网无法连接的解决方法