从没有WCF服务库项目/程序集引用的客户端使用WCF服务

以下问题可能是重复的,但没有足够的信息来回答我的问题。

是否可以在不添加服务引用的情况下访问WCF服务?

我按照本指南使用Visual Studio中的WCF服务库项目设置了TCP服务。

https://msdn.microsoft.com/en-us/library/ff649818.aspx

如果您从客户端(Windows窗体项目)添加对WCF服务库项目的引用,这非常有用。 并将一个using语句添加到项目程序集并使用此代码。

TcpService.Service myService = new TcpService.Service(); myService.GetData(123); 

但是,我不想在调用方法“GetData”的项目中添加对TcpService程序集的引用。 按照上面第一个问题的答案。

所以我尝试使用这段代码。 我添加了对System.ServiceModel(和using指令)的引用来解决大多数错误。 但现在它说“找不到类型或命名空间名称’ServiceContract’(你是否缺少using指令或程序集引用?)”。 我是否需要在我的服务中修改App.Config,或者将任何其他代码(关于’ServiceContract’)添加到调用此代码的项目中?

  BasicHttpBinding binding = new BasicHttpBinding(); EndpointAddress address = new EndpointAddress("net.tcp://localhost:8523/Service"); ChannelFactory factory = new ChannelFactory(binding, address); ServiceContract channel = factory.CreateChannel(); channel.GetData(123); 

在此处输入图像描述

注意:我将默认的Service1.cs和默认接口IService1.cs重命名为Service.cs和IService.cs。 没有“1”作为后缀,基于说明。 我还在我的代码中将WcfServiceLibrary1重命名为TcpService。 此外,在.NET 4.5中,我根本不需要这行代码才能使用它。 这个.Close()出错了。

 myService.Close(); 

我在Visual Studio中添加了一个服务引用,右键单击Project> Add> Service Reference。 但我在那里得到一个错误。

在此处输入图像描述

第二个对话框出错:

无法识别URI前缀。 元数据包含无法解析的引用:’net.tcp:// localhost:8523 / Service’。 无法连接到net.tcp:// localhost:8523 / Service。 连接尝试持续时间跨度为00:00:01.0011001。 TCP错误代码10061:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:8523。 无法建立连接,因为目标计算机主动拒绝它127.0.0.1:8523如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。

该指南错过了一步。 除了httpGetEnabled属性之外,我httpsGetEnabled设置为“false”,并且它有效! 之后,我在添加服务引用时不再收到错误。 然后我将’ServiceContract’更改为’MyClientProject.ServiceReference1.IService’以引用新的服务引用。

   ...