c# - 关于WCF的两个问题
问题描述
为什么,在定义从 继承的类时ClientBase<TChannel>
,服务接口被“嵌入”了两次,一次通过组合(在 中的泛型<TChannel>
),另一次通过继承,而不仅仅是一个(如组合)?
在另一件事上,我们成功调用了一个自定义客户端代理方法,该方法调用了base.channel
接口指针的方法,并且我们遇到了一个问题,在接下来调用另一个客户端代理函数时(它也重定向到另一个base.channel
) ,base.channel
属性变为null
(所以在调用函数时),最终提高了NullReferenceException
. 为什么会发生这种情况?(我们ClientBase
使用默认构造函数创建代理,不提供任何绑定信息)。编辑:问题不在于在第一次函数调用之后将base.channel
指针设置为null
,而是在每次调用时都会创建一个自定义服务的新实例。如何确保使用相同的对象?
解决方案
我找到了第二个问题的答案。解决方案(至少在我们的例子中)是建立以下属性:[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
,请参见此处。
尽管如此,任何人都可以自由地回答我的第一个语义问题,我会相应地给予奖励。
推荐阅读
- javascript - 使用 Moment.js 显示时间输入
- javascript - 为什么空对象对流类型中的非精确类型注释有效?
- python - Django items = order.orderitem_set.all() 返回数量的空值
- java - 最近更新的数据库记录未反映在后续 SELECT 中
- opengl - 'variable' : 在当前 GLSL 版本中不可用 gl_TexCoord
- reactjs - React-Final-Form:默认取初始值,如何删除?
- localhost - 本地主机重定向到外部网站
- jsf - 验证失败时恢复值() PrimeFaces
- python - pandas 在 column1 中找到匹配项并更新 column2 上的相应行
- r - Knitr:存储变量供以后使用