繁体   English   中英

Windows服务中托管的WCF服务-不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM