【问题标题】:WCF service hosted in Windows service - not working托管在 Windows 服务中的 WCF 服务 - 不工作
【发布时间】:2015-12-03 21:15:00
【问题描述】:
我创建了 WCF 服务和一些使用它的简单 WPF 应用程序。当我在 Visual Studio 中运行项目时,WCF 测试客户端打开,应用程序工作正常,方法在服务工作中定义。
但我需要在 Windows 服务中托管此 WCF 服务。我关注了this,使用Installutil.exe 安装了服务并运行了该服务。一切顺利,它正在工作。
然而,当我尝试直接从应用程序的调试文件夹中使用 WPF 应用程序打开可执行文件时,我收到此错误:
扎德8。已停止工作
选择使用新的 VS 实例调试它的选项后,我得到了
XamlParseException 发生在 PresentationFramework.dll 中
堆栈跟踪显示如下:
无法启动连接,因为目标计算机正在主动拒绝它
你知道会出什么问题吗?
【问题讨论】:
标签:
c#
wpf
windows
wcf
service
【解决方案1】:
幸运的是,我设法想出了解决方案。我想我应该发布它,也许有一天它会对某人有所帮助:)
我实际上犯了两个错误,但不幸的是,其中一个是由提到的教程 (here) 与我的临时停电有关的。
在本教程的第 5 步第 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 放在那里。反正..
如果有人把这一切都抛在脑后,但仍然遇到同样的问题(应用程序停止工作),我认为您应该尝试在 Visual Studio 中打开项目并尝试将客户端消费应用程序作为新实例进行调试(对单击项目-> 调试-> 作为新实例启动...)。
这可能看起来微不足道,但是当你按下 F5 或 Ctrl+F5 时,即使你只将那些项目设置为启动项目,VS 仍然会托管它的客户端。就我而言,这确实很重要,因为我需要使用隔离存储文件。由于它保存在服务端,所以我在 VS 创建的 IIS 服务器中创建了这个文件。不知何故,我创建此类文件的方法设置了 FileMode.Open() 并且它导致了崩溃,因为在 Windows 服务中它不存在并且无法创建新的,这是正确运行它所必需的。
而且这只是告诉我这个问题无法正确回答,因为我提供的数据不够,而且很微妙。
干杯:)