自托管netttcpbinding服务在Application_Start

本文关键字:Application Start 服务 netttcpbinding | 更新日期: 2023-09-27 18:05:14

这是背景——我想自己托管一个实现netttcpbinding的WCF服务,它必须与Windows Server 2003/IIS6兼容。

我想看看是否有可能在Application_Start事件期间自托管在global.asax:

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工作?它是否必须通过控制台应用程序/windows服务的自主机,或者我可以在全局自主机。如上图所示?

谢谢。

自托管netttcpbinding服务在Application_Start

再容易不过了。使用windows服务。当IIS想要卸载应用程序时,它会被卸载,所以你永远不知道你的服务是否运行,也可能有其他问题。

Windows 2003 + Net。Tcp = Windows服务。