2012-04-02 95 views
0

我正在创建一个WCF服务。起初我有一个WCF服务库项目和一个引用这个库的控制台项目。当我在客户端项目中使用“添加服务引用”时,只要服务库具有有效的App.Config文件,它就可以正常工作。是否可以使用“添加服务引用”选项在WCF中添加自托管服务?

但是,现在我想将服务库和控制台主机合并到一个控制台项目中。毕竟,以前的控制台项目非常简单。但是问题在于:当我选择“添加服务引用”并给出我在新控制台项目的App.config文件中定义的端点时,它找不到任何服务引用。我认为这是因为当添加服务引用函数打开时(我认为它是有意义的),服务将不会由wcfsvchost.exe承载。但我想不出一个办法让它工作。那么,如果我的服务是一个单一的控制台托管项目,我该如何添加服务引用?

+0

**当然是!**你为什么问?该服务需要启动并运行 - 那么您绝对可以为该服务执行“添加服务引用”。毕竟:它只是一个WCF服务 - 它的托管方式与客户端调用它无关...... – 2012-04-02 08:22:06

+0

@marc_s谢谢。我忘了提及一件事:我试着用我原来的服务库“添加服务引用”(以便wcfsvchost将使这个服务运行),它与我的组合控制台具有完全相同的文件和app.config。但是当我卸载这个库并运行组合控制台时(我假设这两个服务将是相同的,这样以前生成的服务引用也可以用于新的服务引用),我的客户端说“找不到端点”。我想这是因为我需要使用生成的服务引用来更改某些内容,但它们究竟是什么? – tete 2012-04-02 08:48:32

回答

0

最简单的方法是运行WCF服务,生成服务引用,然后将其合并到单个应用程序中。您只需更改app.config中的地址即可。但要小心,因为您应该更改客户端部分的地址,而不是app.config的服务器部分。

但是,当您决定更改服务数据合同并重新生成服务参考时,这种方法在将来很难维护。您可能需要考虑以下事项:将服务引用包装到程序集中,然后使用程序集。这样,您将能够在需要时重新生成服务参考。

+0

感谢您的帮助。你能更具体地说我应该做些什么来改变“app.config中的地址”?因为我尝试了从我的服务库生成的服务引用,它基本上使用与我的组合控制台项目相同的设置。但是当我运行组合控制台时(我卸载了服务库,所以wcfsvchost.exe不会托管这个版本),它应该提供与服务库完全相同的服务,我的客户端说没有找到端点。我猜测这是因为有些不同,我需要改变。但我只是不知道什么 – tete 2012-04-02 08:43:58

+0

@tete你可以在问题中发布你的组合app.config?您可以删除敏感信息。也可能是您在WCF服务启动并运行之前发送请求的情况 – 2012-04-02 08:46:06

+0

当然,请参阅我的原始帖子更新。 – tete 2012-04-02 08:49:45

相关问题