下面是背景 - 我想自托管一个实现netTcpBinding的WCF服务,它必须与Windows Server 2003 / IIS6兼容。
我试图看看它是否可以在global.asax中的Application_Start事件中自我托管:
protected void Application_Start(object sender, EventArgs e)
{
NetTcpBinding binding = new NetTcpBinding();
binding.PortSharingEnabled = true;
ServiceHost host = new ServiceHost(typeof(Svc), new Uri("net.tcp://xxx.x.xxx.xx:1100"));
string address = "Tcp";
host.AddServiceEndpoint(typeof(IService), binding, address);
host.Open();
}
但我在尝试拨打该服务时在客户端收到此消息:
Could not connect to net.tcp://xxx.x.xxx.xx:1100/Tcp. The connection attempt lasted for a time span of 00:00:01.0630608. TCP error code 10061: No connection could be made because the target machine actively refused it xxx.x.xxx.xx:1100.
我的第一直觉是看这是否是一个端口问题,所以我打开了客户端上的相关端口,但它没有帮助,服务器端口是否重要?否则我可以访问该端口。
或者如果因为我正在使用IIS6而发生这种情况,那么使用自托管可以使用什么样的解决方法来使用IIS6?是否需要通过控制台app / windows服务自助主机,或者我可以在global.asax中自我托管,如上所示?
感谢。
答案 0 :(得分:2)
没有比这更容易了。 Use windows service。当IIS想要卸载IIS中的应用程序时,您永远不知道您的服务是否运行,并且还可能存在其他问题。
Windows 2003 + Net.Tcp = Windows服务。还有别的错。