server内部异常堆栈跟踪的结尾

server内部异常堆栈跟踪的结尾,第1张

  最近在项目里面用到了WebService,谈一下学习体会及它的用法。

  现在项目需求是这样的:客户是做直销行业的,现在他们用着几个软件系统,我们称之为业务系统,假设为A,B,C,现在需要把这三个系统的某些功能模块独立出来,如:用户下订单→公司审核订单→生成出库单→物流发货。以前客户如果想要 查看订单进行发货 *** 作的话,需要分别登录到A,B,C三个业务系统的后台,一一进行 *** 作,非常不便,现在客户要求把物流发货这一块独立出来,我们称之为物流系统D,只需要这一个系统 分别管理A,B,C三个系统的订单等信息。 但是,A,B,C这三个业务系统 所在的服务器不同,数据库也不同,因此在数据交互方面如果采用 数据库里的一些技术 会非常复杂。因此想利用 WebService服务进行各个系统间的通信。

  关于WebService的一些具体用法,本文就不做介绍了,相信读者在网上可以查到很多资料。只谈一下项目中的具体应用。

  首先,在物流系统D中,建立一个WebService,在.cs中添加方法,这里我们添加一个方法insertOrder(DataSet ds,WebServiceKey key),参数是一个DataSet和一个Key,其中ds是三个系统传过来的,里面是Order的具体信息,在物流系统D中获取过来后,插入到物流的数据库中,同时返回给业务系统一个ResulTID,用来标识 是否已经成功将数据 传输到物流系统中。

  其次,在各业务系统中,分别引用WebService,向物流系统中传输数据。

  要注意的几个问题:

  (1)可能出现网络不通的情况,用户的订单可能传不过来,因此,我们在用户每下一个订单的时候,都会遍历数据库中,ResulTID为空的数据,如果为空,即调用WebService进行数据传输。这样,即使有一个用户因为特殊原因没有 同步过来数据,其他用户在下订单的时候,也会帮着同步数据。这样,除非网络全部瘫痪,才会导致数据传输失败。

  (2)在同步数据的时候,即使因为特殊原因,导致数据传输失败,也不能影响用户的其他 *** 作。

  经过几天的奋斗,其功能已经实现,在本地测试良好,但在发布到服务器上时,却访问不了WebService,百思不得其解,其报错信息如下:

  System.Web.Services.Protocols.SoapExcepTIon: 服务器无法处理请求。 ---》 System.TypeIniTIalizationException: “WebService”的类型初始值设定项引发异常。 ---》 System.NullReferenceException: 未将对象引用设置到对象的实例。

  在 WebService..cctor()

  --- 内部异常堆栈跟踪的结尾 ---

  --- 内部异常堆栈跟踪的结尾 --

  根据以上信息,猜测是有些东东没有赋值,但始终找不到原因,最终找到:我们在用WebService的时候,需要一个Key,用来防止 随便一个人就能访问我们的WebService,而在服务器的数据库中,我们没有加入这个字段,导致始终返回一个空值,报了上述错误。

  关于server 内部异常堆栈跟踪的结尾

  1.在taidou中,创建完人物,然后点击进入游戏 出现此问题的解决方法

  日志输出情况为下:

  server内部异常堆栈跟踪的结尾,server内部异常堆栈跟踪的结尾,第2张

  解决方法如下

  从日志输出上边可以看出 是一个LitJson转化时出的的错误。 再从日志输出上看到是在TaidouServer的RolerHandler的第55行转换时出现的问题,即 ParameterTool.AddParameter(parameters,ParameterCode.RoleList, roeList);此行代码出现问题。因为roeList里面的Role带有user的对象,这样有关联的转换是会出现问题的

  错误代码:

  case SubCode.GetRole:

  List《Role》 roeList = roleManager.GetRoleListByUser(peer.LoginUser);//取得登录的user.

  ParameterTool.AddParameter(parameters,ParameterCode.RoleList, roeList);

  break;

  改正后的代码:

  case SubCode.GetRole:

  List《Role》 roeList = roleManager.GetRoleListByUser(peer.LoginUser);//取得登录的user.

  foreach (var role1 in roeList)

  {

  role1.User = null;

  }

  ParameterTool.AddParameter(parameters,ParameterCode.RoleList, roeList);

  break;

  2.中出现此问题的大众解决方法解决方法

  1.首先检查,服务器端的NuGet程序包是否添加MySql.Data。

  2.检查服务器端的NHibernateHelper类里关于连接数据库的信息是否正确。

  3.检查服务器端的Model和Mapping是否一致。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2717501.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存