我有一个客户端/服务器wcf应用程序
我的可执行文件没有定义任何ServiceContract
,它甚至没有引用System.ServiceModel
(,而是引用了包含服务器连接逻辑的程序集)
我有另一个程序集,由我的EXE引用,其中包含ServiceContract
。
过去工作正常。昨天,我用我的项目设置(部分信任,完全信任,部署设置等)玩了很多,现在,每次我启动我的客户端,我都得到了以下消息框:
Microsoft WCF服务主机
目标程序集不包含任何服务类型 您可能需要调整此程序集的代码访问安全性策略。
然后VS冻结1分钟,最终让我像往常一样调试我的程序。
我找到a post on this problem,但解决方案不适用于我的情况。 有任何想法吗?
答案 0 :(得分:116)
总是这样。你搜索了2个小时,最终你最终在SO上发布了,5分钟后,你找到了答案。
在定义ServiceContract
的项目属性的WCF Options标签中,
有一个复选框,标记为“在同一解决方案中调试另一个项目时启动WCF服务主机”,我取消选中。
我不知道它是如何被检查的。
无论如何,这解决了我的问题。有关此项目设置,请参阅MSDN Reference。
答案 1 :(得分:11)
以防万一其他人正在寻找答案,如果您的项目中的App.config
文件恰好是<system.serviceModel>
类,那么此错误的另一个原因可能是App.config
我将服务代码移出了一个项目,该项目是一个可执行文件到另一个项目但却意外地遗留了旧的App.config
文件。我的新项目是一个以编程方式配置并启动了WCF的控制台应用程序,但由于旧的{{1}}文件位于引用的程序集中,即使在调试控制台应用程序时,我也会得到一个神秘的对话框。
大约需要12个小时来跟踪这个。
答案 2 :(得分:7)
要确定出现此问题的项目,请在项目文件中找到字符串3D9AD99F-2412-4246-B90B-4EAA41C64699。
示例:<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
然后在同一解决方案中调试另一个项目时关闭项目选项“WCF选项/启动WCF服务主机”
答案 3 :(得分:4)
有些博客说,可能是因为从不同的分支复制项目,而是覆盖了GUIDe ...所以只需删除它们,如this blog.中所述
答案 4 :(得分:1)
我也遇到了同样的问题,并搜索了几个小时来摆脱这个特殊的错误。最后我确实找到了解决方法。
当您遇到此特定问题时,尝试以管理员 运行您的服务器和客户端应用程序,并更改 WPF属性项目。
单击项目的WPF属性时,您将找到构建选项。在构建选项中,有一个名为 PLATFORM TARGET 的选项,您可以在其中将平台目标更改为 x86 。另请注意,如果是 x84 ,则需要将其设置为 x84 。
现在从控制台运行你的项目,即转到保存项目的文件夹,在客户端的bin中,你会找到一个文件夹 debug 您将获得控制台应用程序的位置。您现在应该能够成功运行该应用程序。
答案 5 :(得分:1)
此错误也可能是由配置文件中的错误服务名称引起的:
<system.serviceModel>
<services>
<service name="MyServiceLibrary.WrongServiceName">
...
检查您的配置文件,确保服务名称正确无误。
答案 6 :(得分:1)
旧线程。只需从Options中的Debug部分删除任何命令行参数即可。这帮助了我。
答案 7 :(得分:0)
添加另一个解决方案,因为此消息似乎有多种原因。从项目文件中的ProjectTypeGuids标记中删除以下GUID解决了该问题。
<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699}</ProjectTypeGuids>
答案 8 :(得分:0)
在我的例子中,问题是,因为一个普通的类库项目(由 WCF 服务库引用)在它的 .csproj 文件中有这个:
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}">
<WcfProjectProperties>
<AutoStart>True</AutoStart>
</WcfProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
将其更改为 False 解决了问题。 这个答案已经存在,但请确保您检查了所有项目,而不仅仅是 WCF 服务库。