[英]WCF service hosted in Windows service - not working
我创建了WCF服务和一些使用它的简单WPF应用程序。 当我从Visual Studio中运行项目时,将打开WCF测试客户端,并且该应用程序可以正常工作,这是服务工作中定义的方法。
但是我需要在Windows服务中托管此WCF服务。 我遵循了此步骤 ,使用Installutil.exe
安装了服务,并运行了该服务。 一切顺利,一切正常。
但是,当我尝试直接从WPF应用程序的调试文件夹中打开可执行文件时,出现此错误:
zad8。 已经停止工作
选择选项以VS的新实例对其进行调试后,我得到
XamlParseException出现在PresentationFramework.dll中
堆栈跟踪显示如下内容:
无法启动连接,因为目标计算机正在主动拒绝连接
您知道什么地方可能出问题吗?
幸运的是,我设法提出了解决方案。 我想我应该发布它,也许有一天它将对某人有所帮助:)
我实际上犯了两个错误,但是不幸的是,其中一个错误是由于上述教程( 此处 )与我的临时停电有关。 在本教程的第5步的第8点中,有一个重写OnStart()方法的示例:
protected override void OnStart(string[] args)
{
if (myServiceHost != null)
{
myServiceHost.Close();
}
myServiceHost = new ServiceHost(typeof(Service1));
myServiceHost.Open();
}
请注意, Service1
在这种情况下是模棱两可的,因为它是Windows Service项目类的名称以及WCF Service类的名称。 应该使用完全限定的名称(这里是WcfServiceLibrary1.Service1)来编写。 就我而言,服务名称是不同的,我只是匆匆将Service1
放在那里。 无论如何..
万一有人将其遗忘,但仍然遇到相同的问题(应用程序停止工作),我认为您应该尝试在Visual Studio中打开该项目,并尝试将使用客户端的应用程序作为新实例进行调试(右键单击project-> Debug-> Start as new instance ...)。
看起来微不足道,但是当您按F5或Ctrl + F5组合键时,即使您仅将那些项目设置为启动项目,VS仍将托管它的客户端。 就我而言,这确实很重要,因为我需要使用隔离存储文件。 并且由于保留在服务端,因此我在VS创建的IIS服务器中创建了此文件。 不知何故,我创建此类文件的方法设置了FileMode.Open(),并造成了崩溃,因为在Windows Service中它不存在并且无法创建新文件,因此必须正确运行它。
更重要的是,它向我显示了该问题无法正确回答,原因是我提供的数据不够准确。
干杯:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.