以下问题可能是重复的,但没有足够的信息来回答我的问题。
我已经按照本指南在 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<ServiceContract> factory = new ChannelFactory<ServiceContract>(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 中添加了一个服务引用,方法是右键单击“项目”>“添加”>“服务引用”。但我在那里得到一个错误。
第二个对话框中的错误:
无法识别 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 如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。