问题描述
WCF静态变量在服务被调用时没有值是什么情况?
解决方案
解决方案二:
你把相关的代码贴出来
解决方案三:
什么叫没有值,里面是null?另外你怎么知道没有值,写日志了吗
解决方案四:
没赋值??
解决方案五:
在onstart里面调用的赋值方法,直接附加到服务调试的话是有值的,但是当用web项目调用wcf服务时,就没有值了。好像静态列表没有保存下来,不知道是不是没有执行onstart,但是不应该是服务启动时就执行过了吗?
解决方案六:
引用2楼Z65443344的回复:
什么叫没有值,里面是null?另外你怎么知道没有值,写日志了吗
断点调试没有值
解决方案七:
引用3楼starfd的回复:
没赋值??
在onstart里面赋值了的
解决方案八:
怀疑onstart不执行,在onstart里写日志,看到底执行没执行
解决方案九:
还有,右键查找所有引用,看除了初始化之外,还有哪里会给它赋值,是否重新赋值的时候没有取到值,赋给它的是空值.
解决方案十:
你的绑定方式是什么样子的?调用方式是什么样的(PerCall?PerPexx,Single?)?OnStart又是什么方法?是Application_Start吗?
解决方案十一:
引用9楼starfd的回复:
你的绑定方式是什么样子的?调用方式是什么样的(PerCall?PerPexx,Single?)?OnStart又是什么方法?是Application_Start吗?
是寄宿在winservice上面的wcf服务,winservice启动时重写onstart方法,在这里面获取数据填充到静态list中,然后调用wcf方法时获取不到这个List
解决方案十二:
引用10楼u011690939的回复:
Quote: 引用9楼starfd的回复:
你的绑定方式是什么样子的?调用方式是什么样的(PerCall?PerPexx,Single?)?OnStart又是什么方法?是Application_Start吗?是寄宿在winservice上面的wcf服务,winservice启动时重写onstart方法,在这里面获取数据填充到静态list中,然后调用wcf方法时获取不到这个List
list为空
解决方案十三:
没遇到过,你这个静态变量一定要在Start的时候赋值吗?不能在静态构造器里面赋值么?
解决方案十四:
你把你的OnStart方法搬到web的Application_Start方法里去呢
解决方案十五:
引用12楼lc2737的回复:
没遇到过,你这个静态变量一定要在Start的时候赋值吗?不能在静态构造器里面赋值么?
是啊,因为要定时去扫描这个静态列表,并根据条件更新列表中的值
解决方案:
引用13楼starfd的回复:
你把你的OnStart方法搬到web的Application_Start方法里去呢
这个。。。放到application_Start里是什么用意呢?
解决方案:
你分清楚了服务端和客户端吗?web客户端是通过soap与服务端通讯的,中间要经过序列化也就是远程对象->序列化->byte[]->反序列化->本地对象这是类似于深拷贝,两个对象值完全一样,但却分别位于服务端与客户端,类似的还有remoting
解决方案:
引用16楼dongxinxi的回复:
你分清楚了服务端和客户端吗?web客户端是通过soap与服务端通讯的,中间要经过序列化也就是远程对象->序列化->byte[]->反序列化->本地对象这是类似于深拷贝,两个对象值完全一样,但却分别位于服务端与客户端,类似的还有remoting
然后呢?为什么在windows服务中初始化过后的静态列表在wcf服务中会没有值呢?静态列表是public的
解决方案:
引用14楼u011690939的回复:
Quote: 引用12楼lc2737的回复:
没遇到过,你这个静态变量一定要在Start的时候赋值吗?不能在静态构造器里面赋值么?是啊,因为要定时去扫描这个静态列表,并根据条件更新列表中的值
你在这里是怎么做的?是先把列表中的值清空吗?还是值取完了一次性重新赋值?