【问题标题】: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 服务中它不存在并且无法创建新的,这是正确运行它所必需的。

    而且这只是告诉我这个问题无法正确回答,因为我提供的数据不够,而且很微妙。

    干杯:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      相关资源
      最近更新 更多