用ECO开发的一个多层架框碰到一些问题,请大家指教...
大家好,我的一个系统最近在运行时会出现以下这几个错误,大家帮忙看看是什么原因造成的:
系统环境如下:
服务端:使用ECOIII技术,C#Builder2006,DotNet1.1
客户端:VS2005开发的WinForm及Web界面,DotNet2.0
使用Remoting通讯
使用SQLServer2005数据库
DotNet1.1和2.0的补丁已打到最新的
服务器使用Windows2003,IIS6
//系统日志一:
//*******************************************
Timestamp: 2006-12-24 20:07:14
Message: 客户:空的登陆名
System.InvalidOperationException: 此 SqlTransaction 已完成;它再也无法使用。
Server stack trace:
在 System.Data.SqlClient.SqlTransaction.ZombieCheck()
在 System.Data.SqlClient.SqlTransaction.Commit()
在 Borland.Eco.Persistence.Connection.AbstractIQueryImpl.InternalClose()
在 Borland.Eco.Persistence.Connection.AbstractIDatabaseImpl.ReleaseQuery(IQuery query)
在 Borland.Eco.Internal.TBoldSystemPersistenceMapper.PMFetchClassWithCondition(IDatabaseCollection Databases, ObjectIdList& ResultList, AbstractCondition BoldCondition, Int32 MaxResults, Int32 Offset)
在 Borland.Eco.Internal.TBoldPersistenceControllerDefault.FetchIDListWithCondition(IDatabaseCollection databases, AbstractCondition Condition, ObjectIdList& ResultList, Int32 MaxResults, Int32 Offset)
在 Borland.Eco.Persistence.PersistenceMapperDb.PersistenceMapperAdapter.Borland.Eco.Persistence.IPersistenceMapper.FetchIDListWithCondition(AbstractCondition condition, ObjectIdList& result, Int32 maxResults, Int32 offset)
在 Borland.Eco.Internal.TBoldSystemPersistenceHandler.GetAllWithCondition(AbstractCondition Condition, Int32 MaxAnswers, Int32 Offset)
在 Borland.Eco.Services.Impl.PersistenceServiceImpl.GetAllWithCondition(AbstractCondition condition, Int32 maxAnswers, Int32 offset)
在 Borland.Eco.Internal.TBoldOclPsService.Execute(IElement root, IExternalVariableList variableList, String expression, Int32 maxAnswers, Int32 offset)
在 ManageOrganization.Party.GetOperatingScopeList() 位置 f:\我的文档\Borland Studio Projects\10178\Porjects\ManageOrganization\Party.cs:行号 202
在 AppCommonFacades.PermissionHelperFacade.set_LoginAccount(UserAccount value) 位置 d:\10178_Esales\ESalesFacades\AppCommonFacades\PermissionHelperFacade.cs:行号 47
在 AppControllerFacades.OrganizationControllerFacade.Login(UserAccount anUserAccount, String aPassword, String aMAC, String aIP) 位置 d:\10178_Esales\ESalesFacades\AppControllerFacades\OrganizationControllerFacade.cs:行号 126
在 AppControllerFacades.OrganizationControllerFacade.Login(String aLoginName, String aPassword, String aMAC, String aIP, String[] aCategorys) 位置 d:\10178_Esales\ESalesFacades\AppControllerFacades\OrganizationControllerFacade.cs:行号 179
在 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
在 System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
在 System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
//*******************************************
//系统日志二:
//*******************************************
Timestamp: 2006-12-27 14:54:30
Message: 客户:danshen
System.InvalidOperationException: 哈希表插入失败。加载因子太高。
在 CustomExceptionHandler.CustomException(Exception ErrorInfo)
//*******************************************
//系统日志三:
//*******************************************
Timestamp: 2006-12-25 20:31:04
Message: 客户:空的登陆名
System.NullReferenceException: 未将对象引用设置到对象的实例。
Server stack trace:
在 AppOrgFacades.UserAccountFacade.GetOrganizationImpl(UserAccount anUserAccount) 位置 d:\10178_Esales\ESalesFacades\AppOrgFacades\UserAccountFacade.cs:行号 145
在 AppControllerFacades.OrganizationControllerFacade.Login(String aLoginName, String aPassword, String aMAC, String aIP, String[] aCategorys) 位置 d:\10178_Esales\ESalesFacades\AppControllerFacades\OrganizationControllerFacade.cs:行号 179
在 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
在 System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
在 System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
Exception rethrown at [0]:
在 CustomExceptionHandler.CustomException(Exception ErrorInfo)
//*******************************************
各种日志产生的后果表现如下:
系统日志一:当发生这种错误后,所有的客户端程序都不能使用,抛出这个异常。只能把服务程序重启。
系统日志二:当发生这种错误后,web上的部份界面会抛出这个异常,WinForm客户端能正常使用,把IIS的应用程序池回收一下就正常了。
系统日志三:当发生这种错误后,WinForm客户端能正常使用,但web上的数据乱了,看起来有点象ECOSpace的对象乱了。在web客户端,公用一个ECOSpace来处理查询请求,当客户发生提交数据请求时,临时产生一个ECOSpace。发生这种情况时,用户取到的对象列表乱了,比如用同样的条件,原来可以取到10个对象的,这时只能取到1个或者根本就没有。重启服务程序后正常。
另外,这三种情况不定期的发生,也不会很频繁,大概每隔1-2天会有一种情况发生,不知道各位有没有碰到过类似的问题。特请大家指教,这些问题是由什么产生的。
根据不同的异常,到MS官方找到一些修复的文章,解决的办法是说打上DotNET1.1或2.0及SQLServer2005的补丁,但是我打完后问题依旧存在。
急盼各位的帮助!