Windows服务中托管的WCF服务 - 无法正常工作

时间:2015-12-03 21:15:01

标签: c# wpf windows wcf service

我已经创建了WCF服务和一些使用它的简单WPF应用程序。当我从Visual Studio中运行项目时,WCF测试客户端打开,应用程序工作正常,在服务工作中定义的方法。

但我需要在Windows服务中托管此WCF服务。我跟着this,使用Installutil.exe安装了服务并运行了服务。一切都很顺利,它正在发挥作用。

然而,当我尝试直接从应用程序的调试文件夹中使用WPF应用程序打开可执行文件时,我收到此错误:

  

zad8。已停止工作

选择使用VS的新实例调试它的选项后我得到

  

在PresentationFramework.dll中出现XamlParseException

堆栈跟踪显示如下:

  

无法启动连接,因为目标计算机正在主动拒绝它

你知道会出现什么问题吗?

1 个答案:

答案 0 :(得分:0)

幸运的是,我已经设法提出了解决方案。我想我应该发布它,也许有一天它会帮助某人:)

我实际上犯了两个错误,但不幸的是其中一个错误是由于我提到的教程(here)与我的临时停电造成的。 在本教程的第8步,第8步中,有一个覆盖OnStart()方法的示例:

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

请注意,Service1在此上下文中不明确,因为它是Windows服务项目类的名称以及WCF服务类的名称。它应该用完全限定的名称编写(这里是WcfServiceLibrary1.Service1)。在我的情况下,服务名称是不同的,我只是把Service1放在那里匆忙。反正..

万一有人把它全部抛在后面但仍然遇到同样的问题(app停止工作),我认为你应该尝试在Visual Studio中打开项目并尝试将客户端消费应用程序调试为一个新实例(右单击项目 - >调试 - >作为新实例启动...)。

这看起来似乎微不足道,但是当你点击F5或Ctrl + F5时,即使你只将那些项目设置为启动项目,VS仍会托管它的客户端。在我的情况下它确实很重要,因为我需要使用隔离存储文件。因为它保留在服务端,然后我在VS创建的IIS服务器中创建了此文件。不知何故,我创建这样的文件的方法设置了FileMode.Open()并且它导致了粉碎,因为在Windows服务中它不存在,并且无法创建新的文件,并且正确运行它是必要的。 / p>

更重要的是它只是告诉我这个问题无法正确回答,因为我提供的数据不够而且很精致。

干杯:)