首页 > 解决方案 > 关于WCF的两个问题

问题描述

为什么,在定义从 继承的类时ClientBase<TChannel>,服务接口被“嵌入”了两次,一次通过组合(在 中的泛型<TChannel>),另一次通过继承,而不仅仅是一个(如组合)?

在另一件事上,我们成功调用了一个自定义客户端代理方法,该方法调用了base.channel接口指针的方法,并且我们遇到了一个问题,在接下来调用另一个客户端代理函数时(它也重定向到另一个base.channel) ,base.channel属性变为null(所以在调用函数时),最终提高了NullReferenceException. 为什么会发生这种情况?(我们ClientBase使用默认构造函数创建代理,不提供任何绑定信息)。编辑:问题不在于在第一次函数调用之后将base.channel指针设置为null,而是在每次调用时都会创建一个自定义服务的新实例。如何确保使用相同的对象?

标签: c#wcf

解决方案


我找到了第二个问题的答案。解决方案(至少在我们的例子中)是建立以下属性:[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)],请参见此处

尽管如此,任何人都可以自由地回答我的第一个语义问题,我会相应地给予奖励。


推荐阅读