我在.NET 4.5 Windows服务中使用Oracle Advanced Queuing。该服务应从Oracle Queue(11gR2)读取并处理事务中的消息。 这适用于队列中的第一条消息,但在处理第二条消息时,会在Oracle客户端内部深深抛出System.AccessViolationException。
该服务循环执行以下操作:
队列中的第一条消息将被处理,但在下一个循环中,我得到以下StrackTrace并终止Windows服务:
System.AccessViolationException Stack: at Oracle.DataAccess.Client.OpsAQ.FreeCachedDesc(IntPtr ByRef, IntPtr ByRef, IntPtr ByRef) at Oracle.DataAccess.Client.OpsAQ.FreeCachedDesc(IntPtr ByRef, IntPtr ByRef, IntPtr ByRef) at Oracle.DataAccess.Client.OracleAQQueue.Dispose(Boolean) at StarTrack.Common.Messaging.AQ.InternalOracleQueue.Dispose() ....
我正在使用Oracle Client 11.2.0.3.0(64位)。
更新:也试过12.1.0.1.0(64位)客户端,同样的问题。
有没有人做过类似问题的Oracle Advanced Queuing并且解决了它?
祝你好运, 马库斯