我已经创建了WCF服务和一些使用它的简单WPF应用程序。当我从Visual Studio中运行项目时,WCF测试客户端打开,应用程序工作正常,在服务工作中定义的方法。
但我需要在Windows服务中托管此WCF服务。我跟着this,使用Installutil.exe
安装了服务并运行了服务。一切都很顺利,它正在发挥作用。
然而,当我尝试直接从应用程序的调试文件夹中使用WPF应用程序打开可执行文件时,我收到此错误:
zad8。已停止工作
选择使用VS的新实例调试它的选项后我得到
在PresentationFramework.dll中出现XamlParseException
堆栈跟踪显示如下:
无法启动连接,因为目标计算机正在主动拒绝它
你知道会出现什么问题吗?
答案 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>
更重要的是它只是告诉我这个问题无法正确回答,因为我提供的数据不够而且很精致。
干杯:)