首页新闻找找看学习计划

调用已发布的WebService中使用NHibernate,插入数据报错,但本机未发布前确正常,代码都一样。

0
悬赏园豆:30 [已解决问题] 解决于 2012-12-12 01:59

调用已发布的WebService中使用NH,插入数据报错,System.NullReferenceException: 未将对象引用设置到对象的实例。
但本机未发布前调试却正常插入。代码都是一样的,
                this.HibernateTemplate.Save(XX);这地方报错,代码都一样,代码走向也看了 没没有其他值是null 为何在发布以后就出这问题,websevice的问题?

迷失路灯的主页 迷失路灯 | 初学一级 | 园豆:7
提问于:2012-12-09 15:28
< >
分享
最佳答案
0

插入数据报错??? 没有具体的错误?

收获园豆:30
chenping2008 | 大侠五级 |园豆:9836 | 2012-12-09 15:29

System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 IMSDataOperation.Services.DepartmentServiceDao.Insert(DepartmentInfo departmentInfo) 位置 G:\业余\项目源文件\IMSDataOperation\Services\DepartmentServiceDao.cs:行号 142
   在 IMSService.Service.ExternalServices.CommitedWriting(Token pToken, Object pObject, TrafficType pQueryType) 位置 G:\业余\项目源文件\IMSService\Service\ExternalServices.cs:行号 73

出错代码是:
                this.HibernateTemplate.Save(departmentInfo);

如果webservice 放在VS里调试 确可以插入,跟踪departmentInfo值 没发现是null

迷失路灯 | 园豆:7 (初学一级) | 2012-12-09 15:48

@迷失路灯: 难道是nhibernate没有配置正确?

chenping2008 | 园豆:9836 (大侠五级) | 2012-12-09 16:15

@chenping2008: 不会哈 在插入数据之前, 我做了读数据操作,数据是可以查询到的。我想是不是webserice 有啥东西没引用?

迷失路灯 | 园豆:7 (初学一级) | 2012-12-09 16:37

@迷失路灯: 要不还是调试一下吧

chenping2008 | 园豆:9836 (大侠五级) | 2012-12-09 20:22

调试了,调项目里的服务就可以,调发布后的就出问题- -

迷失路灯 | 园豆:7 (初学一级) | 2012-12-10 13:11

@迷失路灯: 加到进程中调试,据说是事务没有允许插入修改方法

Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition

我好像在NH里没有添加事务? 配置好事务就好了?

迷失路灯 | 园豆:7 (初学一级) | 2012-12-10 13:34

@迷失路灯: http://blog.csdn.net/2000killer/article/details/4046391

搜“NHibernate FlushMode

chenping2008 | 园豆:9836 (大侠五级) | 2012-12-10 13:49

@chenping2008: 上面说的 那几个几点都添加到web.config 我都放到NHibernate_Spring.xml里 更行service出错- -

迷失路灯 | 园豆:7 (初学一级) | 2012-12-10 14:07

@chenping2008: 我把<add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate12"/>删掉 就正常了,虽然加这个保持一个Session,但如果要解决还得要加上事务拦截,每次写数据的时候进行事务?数据层本身必须加上事务的。 不知 我理解是否正确,请指点下,谢谢

迷失路灯 | 园豆:7 (初学一级) | 2012-12-10 14:28
其他回答(2)
0

在服务器上用IntelliTrace记录下错误日志看看

az235 | 园豆:8263 (大侠五级) | 2012-12-10 08:42
0

未创建远程的实例。检查下代码。

````` | 园豆:14268 (专家六级) | 2012-12-10 09:42

代码都一样 VS调试都可以,

支持(0) 反对(0) 迷失路灯 | 园豆:7 (初学一级) | 2012-12-10 13:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册