c# - Windows 服务托管 TCP WCF 服务

标签 c# wcf windows-services wcf-client

我正在尝试在 Windows 2008 R2 服务器上托管 WCF 服务作为 Windows 服务。我按照 msdn ( found here) 提供的说明进行操作。只要一切都是 Visual Studio 中同一解决方案的一部分,一切都可以正常工作。但是,我尝试在不同的解决方案(在同一台机器上)中创建客户端,但找不到该服务。我收到如下所示的“添加服务引用错误”。

enter image description here

我的目标是能够远程访问 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/

相关文章:

c# - 禁用 WCF 帮助页面不起作用

sql - Windows 服务还是 SQL 作业?

c# - PCL 中的 TPL 和监视器

c# - ASP.NET Core 使用中间件修改 HTTP 请求 header

c# - 如何选择datagridview任意列的最大值和最小值

c# - 在 C 中引发和处理事件

c# - CaSTLe Windsor WCF 设施不处理单向操作

.net - 找不到配置绑定(bind)扩展

c# - 如何在与 SQL Server Express 一起使用的 Windows 服务中定义对 SQL Server 的依赖关系

c++ - 使用配置文件在 Windows Xp 中创建服务