服务没有应用程序(非

我最近创建了一个WCF服务(dll)和一个服务主机(exe)。 我知道我的WCF服务工作正常,因为我能够成功地将服务添加到WcfTestClient。

但是,当我从服务主机(exe)中使用我的WCF时,我似乎遇到了一个问题。 我可以将WCF(dll)的引用添加到我的服务主机(exe)中,并为exe创建必要的组件; 如服务安装程序,服务主机和app.config,编译并使用InstallUtil最终安装该exe文件。 但是,当我尝试在Microsoft管理控制台中启动该服务时,该服务在启动后立即停止。

所以我开始调查究竟是什么原因导致此问题出现在事件查看器中的应用程序日志中。

描述:

服务无法启动。 System.InvalidOperationException:Service'Service'具有零个应用程序(非基础结构)端点。 这可能是因为没有为您的应用程序找到配置文件,或者因为在配置文件中找不到匹配服务名称的服务元素,或者因为服务元素中没有定义端点。

这个错误实际上是在OnStart产生的; 我的exe,当我执行此调用ServiceHost.Open() 。 我看过很多帖子,其他人都遇到过这个问题,但大多数(如果不是全部的话)声称服务名称或合同; 命名空间和类名,没有被指定。 我在我的配置文件中检查了这两个条目; 在EXE以及在DLL中,他们匹配完美。 我已经让办公室里的其他人仔细检查我的身边,以确保我一点都不盲目,但当然他们得出和我一样的结论,一切看起来都是正确的。 对于目前发生的事情,我真的很失落。 有谁能帮我解决这个问题吗?

另一件可能出现的原因是app.config永远不会被读取; 至少不是我认为应该阅读的那个。 这可能是问题吗? 如果是这样,我该如何解决这个问题。 再次,任何帮助将不胜感激。


我刚刚遇到了这个问题,并通过将名称空间添加到服务名称来解决它,例如

 <service name="TechResponse">

成为

 <service name="SvcClient.TechResponse">

我也看到它使用Web.config而不是App.config来解决。


端点还应该有名称空间:

 <endpoint address="uri" binding="wsHttpBinding" contract="Namespace.Interface" />

有一点需要考虑的是:你的WCF是否完全与WindowsService(WS)解耦? WS是痛苦的,因为你对他们没有太多的控制权或可视性。 我试图通过将所有非WS东西放在它们自己的类中来缓解这种情况,以便可以独立于主机WS进行测试。 使用这种方法可以帮助您消除WS运行时发生的任何事情,特别是您的服务。

John可能是正确的,它是一个.config文件问题。 WCF将始终查找执行上下文.config 。 因此,如果您在不同的执行上下文中托管WCF(即使用控制台应用程序进行测试并使用WS进行部署),则需要确保将WCF配置数据移至正确的.config文件。 但是对我而言,潜在的问题是你不知道问题是什么,因为WS goo妨碍了你的工作。 如果你还没有重构过这个,那么你可以在任何上下文中运行你的服务(也就是单元测试或控制台),那么我会建议你这么做。 如果你在单元测试中使用服务,它可能会失败,就像你看到的那样,WS更容易调试,而不是试图用糟糕的WS管道来实现。

链接地址: http://www.djcxy.com/p/54931.html

上一篇: Service has zero application (non

下一篇: Error related to only