Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用“添加服务引用”选项在WCF中添加自托管服务?_Wcf_Service Reference_Self Hosting - Fatal编程技术网

是否可以使用“添加服务引用”选项在WCF中添加自托管服务?

是否可以使用“添加服务引用”选项在WCF中添加自托管服务?,wcf,service-reference,self-hosting,Wcf,Service Reference,Self Hosting,我正在创建一个WCF服务。起初,我有一个WCF服务库项目和一个控制台项目,该项目引用了这个库。当我在客户端项目中使用AddServiceReference时,只要服务库有一个有效的App.Config文件,它就可以正常工作 但是,现在我想将服务库和控制台主机合并到一个控制台项目中。毕竟,之前的控制台项目非常简单。但问题来了:当我选择AddServiceReference并给出我在新控制台项目的App.config文件中定义的端点时,它找不到任何服务引用。我之所以这么做,是因为在启用添加服务引用功

我正在创建一个WCF服务。起初,我有一个WCF服务库项目和一个控制台项目,该项目引用了这个库。当我在客户端项目中使用AddServiceReference时,只要服务库有一个有效的App.Config文件,它就可以正常工作


但是,现在我想将服务库和控制台主机合并到一个控制台项目中。毕竟,之前的控制台项目非常简单。但问题来了:当我选择AddServiceReference并给出我在新控制台项目的App.config文件中定义的端点时,它找不到任何服务引用。我之所以这么做,是因为在启用添加服务引用功能时,wcfsvchost.exe不会托管该服务,我认为这是有意义的。但我想不出一个办法让它起作用。那么,如果我的服务是一个单一控制台托管的项目,我应该如何添加服务引用呢?

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


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

当然可以!你为什么问??该服务需要启动并运行-然后您完全可以为该服务添加服务引用。毕竟:这只是一项WCF服务——它的托管方式与客户称之为“WCF”的方式完全无关……@marc_,谢谢。我忘了提到一件事:我尝试在我的原始服务库中添加服务引用,以便wcfsvchost运行此服务,它与我的组合控制台具有完全相同的文件和app.config。但是当我卸载这个库并运行组合控制台时,我假设这两个服务是相同的,这样以前生成的服务引用也可以用于新的服务引用,我的客户机说找不到端点。我想这是因为我需要对生成的服务引用进行一些更改,但它们到底是什么?谢谢您的帮助。您能更具体地说明我应该做什么更改来更改app.config中的地址吗?因为我尝试了从我的服务库生成的服务引用,它基本上使用了与我的组合控制台项目相同的设置。但当我运行组合控制台时,我卸载了服务库,因此wcfsvchost.exe。不会承载此版本,该版本应承载与服务库完全相同的服务,我的客户端说找不到端点。我猜这是因为有些不同,我需要改变。但我就是不明白what@tete你能在问题中发布你的app.config组合吗?您可以删除敏感信息。也可能是在WCF服务启动和运行之前发送请求。没关系,我在发布app.config时发现了问题:我忘了更改名称空间名称,它仍在使用服务库的名称空间。我真傻。