【发布时间】:2011-01-20 16:38:12
【问题描述】:
我最近创建了一个 WCF 服务 (dll) 和一个服务主机 (exe)。我知道我的 WCF 服务工作正常,因为我能够成功地将服务添加到 WcfTestClient。
但是,当我从服务主机 (exe) 使用 WCF 时,我似乎遇到了问题。我可以向我的服务主机 (exe) 添加对 WCF (dll) 的引用,并为 exe 创建必要的组件;例如服务安装程序、服务主机和app.config,编译然后最后使用InstallUtil安装exe。但是,当我尝试在 Microsoft 管理控制台中启动该服务时,该服务在启动后立即停止。
所以我开始调查究竟是什么导致了这个问题,并从事件查看器中的应用程序日志中发现了这个错误。
说明:
服务无法启动。 System.InvalidOperationException: 服务“服务”的应用为零 (非基础设施)端点。这 可能是因为没有配置文件 为您的应用程序找到了,或 因为没有匹配的服务元素 服务名称可以在 配置文件,或者因为没有 端点在服务中定义 元素。
这个错误其实是在OnStart产生的;我的 exe,当我执行此调用 ServiceHost.Open() 时。我看过很多其他人遇到这个问题的帖子,但是大多数人(如果不是全部)声称服务名称或合同;命名空间和类名,没有被指定。我在配置文件中检查了这两个条目;在 exe 和 dll 中,它们完全匹配。我让办公室里的其他人在我身后仔细检查,以确保我没有在某一时刻失明,但他们当然得出与我相同的结论,即一切看起来都正确指定。我真的对此时发生的事情感到迷茫。谁能帮我解决这个问题?
另一个可能导致这种情况发生的原因是 app.config 从未被读取;至少不是我认为应该阅读的那本书。这可能是问题吗?如果是这样,我该如何解决这个问题。再次,任何帮助将不胜感激。
【问题讨论】:
-
服务契约的定义必须从service.dll.config复制到service.exe.config。
-
你能告诉我们服务的 app.config 吗?你在 NT 服务中有什么特别的东西来实例化/打开 ServiceHost 吗?
标签: .net wcf exception-handling wcf-configuration wcf-endpoint