我正在尝试在 Windows 2008 R2 服务器上托管 WCF 服务作为 Windows 服务。我按照 msdn ( found here) 提供的说明进行操作。只要一切都是 Visual Studio 中同一解决方案的一部分,一切都可以正常工作。但是,我尝试在不同的解决方案(在同一台机器上)中创建客户端,但找不到该服务。我收到如下所示的“添加服务引用错误”。
我的目标是能够远程访问 wcf 服务,但我似乎甚至无法在本地访问它,除非客户端是在同一个客户端中创建的。是否有任何人可以给我的任何指南、教程或有用的提示来使它正常工作?
更新: 似乎即使 Windows 服务正在运行,WCF 服务似乎也没有监听任何端口。这表明它没有运行。这也解释了为什么大家第一个想到我没有运行服务。我曾假设,由于 Windows 服务正在运行并且相同的解决方案客户端可以正常工作,因此 WCF 服务也可以正常工作。事实证明,每当我运行相同的解决方案客户端时,Visual Studio 都会启动 WCF 服务。
那么,为什么windows服务没有启动WCF服务呢?有什么想法吗?
最佳答案
原来是MSDN提供的教程有问题(在上面的问题中提供)。他们将 Windows 服务和 WCF 服务命名为 Service1
,这是它们的默认名称。
Windows 服务本应启动 WCF 服务,但是,它实际上试图再次启动自身,因为这两个服务具有相同的名称。
myServiceHost = new ServiceHost(typeof(Service1));
要解决此问题,您可以重命名其中一项服务或在 Windows 服务中引用时完全限定 WCF 服务。
myServiceHost = new ServiceHost(typeof(WcfServiceLibrary1.Service1));
有趣的是,提供的代码看起来仍然有效,因为 Visual Studio 足够聪明,可以注意到 WCF 服务没有运行,它会在幕后启动一个实例。
这是一个很容易修复的错误,但由于 Visual Studio 对我隐藏了这个问题,我认为如果没有 Espen Burud 的帮助我是无法找到它的。
关于c# - Windows 服务托管 TCP WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10193847/