1

在过去的两天里,我一直在用头撞砖墙,试图在 MSDN 上成功使用这个例子:

如何:使用 TCP 在 Windows 服务中托管 WCF

如果您按照示例将消费者应用程序放在同一个解决方案中,那么它会成功运行 - 即使服务已关闭!

如果服务已打开并且消费者应用程序被发布到不同的网络驱动器,那么它将不会运行,因为 WCF 没有在侦听。

演练中的以下代码是罪魁祸首:

protected override void OnStart(string[] args)
{
   if (myServiceHost != null)
   {
       myServiceHost.Close();
   }
   myServiceHost = new ServiceHost(typeof(Service1));
   myServiceHost.Open();
}

我的朋友注意到,如果我们更改new ServiceHost(typeof(Service1));为,new ServiceHost(typeof(WcfServiceLibrary1.Service1));那么 WCF 将真正开始倾听!

很容易看出它的混乱,因为在 Windows 服务项目以及 WCF 项目中有一个名为 Service1 的类,因此需要完整的资格。

有没有其他人遇到过这个?

4

3 回答 3

1

我有同样的问题(正如你从stackoverflow的原始帖子中知道的那样)。

或者,您可以重命名命名空间 WcfServiceLibrary1 中的类 Service1 以避免冲突。

于 2012-10-11T08:50:12.130 回答
0

你必须放在using WcfServiceLibrary1;顶部

于 2012-10-06T15:33:31.173 回答
0

我还发现文章引用了错误的服务名称。当我尝试它时,我不得不使用:

net.tcp://localhost:8526/Service1/mex

在第 8 步中,而不是列出的内容。

net.tcp://localhost:8526/Service1
于 2018-04-11T12:01:50.803 回答