Tag: servicecontract

从没有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前缀。 […]

在WCF Rest端点中使用参数“params string ”

我想定义一个OperationContract,我可以传递任意数量的字符串参数。 值应解释为字符串数组。 是否有可能在OperationContract中使用此类型的参数并在UriTemplate中定义它? [ServiceContract] public interface IRestService { [OperationContract] [WebGet(UriTemplate = “operations/{values}”)] void Operations(params string[] values); }

在运行时提供ServiceKnownType?

我在合同中使用了超过100个ServiceKnownType的WCF接口,如下所示: [ServiceKnownType(typeof(RowUser))] [ServiceKnownType(typeof(RowRegion))] [ServiceKnownType(typeof(RowDocument))] [… loads more …] [ServiceContract(SessionMode = SessionMode.Required)] public interface IServiceBrowse : IDisposable { [OperationContract] void Insert(Row satz); } 有没有办法在运行时提供这些ServiceKnownTypes? 将所有这些ServiceKnownTypes添加到源代码中不仅容易出错且繁琐,而且我的程序集以我不喜欢的方式绑定在一起(我希望能够将这些类型提取到子组件中以将它们分离,但不能,因为服务需要列出所有已知的类型)。