嵌入式操作系统
最近在项目里面用到了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,而在服务器的数据库中,我们没有加入这个字段,导致始终返回一个空值,报了上述错误。
1.在taidou中,创建完人物,然后点击进入游戏 出现此问题的解决方法
日志输出情况为下:
从日志输出上边可以看出 是一个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;
1.首先检查,服务器端的NuGet程序包是否添加MySql.Data。
2.检查服务器端的NHibernateHelper类里关于连接数据库的信息是否正确。
3.检查服务器端的Model和Mapping是否一致。
全部0条评论
快来发表一下你的评论吧 !