c# – WCF net.tcp – 目标计算机拒绝连接
我在
Windows 8 x 64以及Windows 7 x 64操作系统上遇到此问题.我有一个简单的WCF服务,它使用net.tcp绑定.
我已经按照许多文章编写了这个简单的服务,包括以下MSDN:Hosting and Consuming WCF services 我的服务和配置文件完全如上文所述. 使用InstallUtil.exe作为Windows安装此WCF服务后
我已经通过互联网尝试了与此问题相关的大部分帖子,并且我尝试打开防火墙,卸载防病毒软件,尝试不同的端口,明确为防火墙中的这些端口创建入站和出站规则等.仍然我不是能够访问承载基于net.tcp的WCF服务的Windows服务.我的TCP端口共享服务和TCP列表器适配器服务已打开,我还打开了运行这些TCP服务所需的必要Windows功能. 我可以看到的一件事是,我总是可以在另一个项目的同一个解决方案中访问此服务,因为Visual Studio在我尝试引用此服务时会立即创建一个Wcf服务主机(WcfSvcHost),该服务会查找当前所有项目中的所有端点解决方案并加载它们.只要该主机正在运行,我就可以在另一个解决方案中引用此服务而不会出现问题. 托管我的服务的Windows服务也与给定的代码相同.显然,这会创建ServiceHost的实例并运行它.我已经通过一些日志验证了这一点,它在服务启动时成功执行.但是,当我的服务启动时,我无法在任务管理器中看到此进程正在运行.当我在同一个解决方案中调试或尝试在上面提到的相同解决方案中引用时,我可以在Visual Studio运行时看到此服务. 现在我的问题是,我应该在我的服务启动时在任务管理器中看到这个WcfSvceHost服务吗?我相信我应该.如果我,请纠正我 我是否需要授予我的Windows服务任何特殊权限才能运行此ServiceHost,或者问题是否完全不同?我忽略了一些非常明显的东西吗?任何帮助将受到高度赞赏.谢谢. 这是我的配置文件. <system.serviceModel> <bindings /> <client /> <services> <service name="MyWcfServiceLibrary.WCFService"> <endpoint address="" binding="netTcpBinding" bindingConfiguration="" name="TCPEndPoint" contract="MyWcfServiceLibrary.IWCFService"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" name="mexEndPoint" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="net.tcp://127.0.0.1:8523/MyWCFService" /> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors> <behavior name=""> <serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> 解决方法
让我们通过淘汰来调试.
你启用了端口共享吗? 这是为了跨多个进程共享TCP端口.根据Microsoft“此服务作为WCF的一部分安装,但默认情况下不启用该服务作为安全预防措施”. 以下是如何使用MMC启用Net.TCP端口共享服务 >从“开始”菜单中,打开“服务管理控制台”,方法是打开“命令提示符”窗口并键入services.msc,或打开“运行”并在“打开”框中键入services.msc. 您也可以在此配置中启用NetTcpBinding. <system.serviceModel> <bindings> <netTcpBinding name="portSharingBinding" portSharingEnabled="true" /> </bindings> <services> <service name="MyService"> <endpoint address="net.tcp://localhost/MyService" binding="netTcpBinding" contract="IMyService" bindingConfiguration="portSharingBinding" /> </service> </services> </system.serviceModel> 如果启用了端口共享服务并且您手动启动它,请检查端口8523上是否正在运行另一个应用程序.您可以在命令提示符中使用Netstat -a,也可以从以下地址使用TCPView. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |