问题描述
各位大侠:我做了一个宿主为windows服务的WCF,在局域网都能正常访问,今天想测试一下外网能不能访问,就把基地址改成了外网地址。结果安装服务之后发现客户端访问不了。System.ServiceModel.EndpointNotFoundException:没有终结点在侦听可以接受消息的http://180.107.118.242/service。这通常是由于不正确的地址或者SOAP操作导致的。如果存在此情况,请参见InnerException以了解详细信息。--->System.Net.WebException:无法连接到远程服务器--->System.Net.Sockets.SocketException:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。180.107.118.242:80在System.Net.Sockets.Socket.DoConnect(EndPointendPointSnapshot,SocketAddresssocketAddress)在System.Net.ServicePoint.ConnectSocketInternal(BooleanconnectFailure,Sockets4,Sockets6,Socket&socket,IPAddress&address,ConnectSocketStatestate,IAsyncResultasyncResult,Int32timeout,Exception&exception)---内部异常堆栈跟踪的结尾---在System.Net.HttpWebRequest.GetRequestStream(TransportContext&context)在System.Net.HttpWebRequest.GetRequestStream()在System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream()---内部异常堆栈跟踪的结尾---APP.Config文件<?xmlversion="1.0"?><configuration><system.serviceModel><bindings><wsHttpBinding><bindingname="TransferFileBinding"><!--取消服务器凭据认证--><securitymode="None"/></binding></wsHttpBinding></bindings><services><servicename="KH.Service.ServiceBasic"><endpointaddress="service"binding="wsHttpBinding"bindingConfiguration="TransferFileBinding"contract="KH.Interface.IServiceBasic"/><host><baseAddresses><addbaseAddress="http://180.107.118.242"/></baseAddresses></host></service></services><behaviors><serviceBehaviors><behaviorname=""><serviceDebugincludeExceptionDetailInFaults="true"/></behavior></serviceBehaviors></behaviors><serviceHostingEnvironmentmultipleSiteBindingsEnabled="true"aspNetCompatibilityEnabled="true"/></system.serviceModel><startup><supportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.0"/></startup></configuration>
解决方案
解决方案二:
80端口?你占用了web的端口?然后你的宿主同时是外网服务器?有没有防火墙什么的阻止了?
解决方案三:
你的客户端访问服务时用的地址是什么呢?贴出来你的客户端调试画面。
解决方案四:
你贴出的”http://180.107.118.242/service“这个是你真实不熟的服务的地址吗?是用这个url(或者再加上?wsdl之类的)在浏览器上直接访问,能访问到服务程序存在的证据吗?如果这个地址不对,那么你手动修改的参数文件也就是认为出错了。另外,如果你的客户端访问的服务器是动态的,那么就不能把目标url写死到配置文件中。你应该在new一个WCF客户端代理对象时动态设置服务地址。
解决方案五:
端口我没设,我只是暂时测试一下外网能不能访问,我本机的防火墙都没开。IP是我本机真实的IP客户端调用:WSHttpBindingbinding=newWSHttpBinding();binding.SendTimeout=newTimeSpan(0,0,30);binding.Security.Mode=SecurityMode.None;IServiceBasicmyService=ChannelFactory<IServiceBasic>.CreateChannel(binding,newEndpointAddress(“http://180.107.118.242/service"));myService.TestCall();
解决方案六:
自己顶一下有没有高手解答,我发布的是windows服务
解决方案七:
你设置下端口呢,80端口貌似默认都是走IIS的
解决方案八:
不是端口的问题,局域网也是可以访问的,改了端口也是不能访问。
解决方案九:
帖子不能沉啊,有没有牛哥能解答下
解决方案十:
继续顶贴,,有没有牛人来帮忙看一下
解决方案十一:
该回复于2015-08-31 23:54:52被版主删除
解决方案十二:
是在广域网中的啊,我把服务建在家里的电脑上,远程到公司的电脑上访问的
解决方案十三:
有没有牛人帮我解决下
解决方案十四:
该回复于2015-08-31 23:54:53被版主删除
解决方案十五:
8楼的人家访问都访问不了你说什么客户端引用地址,我真的怀疑你懂不懂,还是装B没装明白
解决方案:
这个问题我之前也遇到过后来解决了不知道楼主解决没