c# – System.Transactions中的未处理异常在网络不稳定期间停止W
我们使用NServiceBus.Host.exe主机进程运行基于NServiceBus的服务.
在过去几个月中,Windows服务突然停止了两次生产,在应用程序事件日志中留下了以下事件:
我们在网络不稳定几分钟的时间段内遇到此错误(例如,针对数据库的大量超时,这些在我们的log4net日志文件中可见) 关于什么在这里失败的任何想法? 我们在log4net日志文件中看不到任何致命错误. 版本: > Windows Server 2008 R2 解决方法
看来你看到的行为与NHibernate如何处理
TransactionCompleted 事件有关.这个问题也是某种方式
related to this question.
AdoNetWithDistributedTransactionFactory在TransactionCompleted事件上注册匿名委托.使用ThreadPool.QueueUserWorkItem在后台线程上触发此事件.如果该操作因数据库服务器的连接问题而引发异常(i.ex.由于网络分区),则此异常将作为AppDomain上的未观察异常引发. UnhandledExceptions会拆除AppDomain,因此也会拆除NServiceBus.Host. 最好的解决方法是在当前AppDomain上注册UnhandledException处理程序,如下所示 AppDomain.CurrentDomain.UnhandledException += OnUnhandledException private static void OnUnhandledException(object sender,UnhandledExceptionEventArgs e) { LogManager.GetLogger(typeof(AppDomain)).Fatal(“Unhandled exception”,e.ExceptionObject as Exception); } 更多信息see 当这解决了中间问题时,找到与NHibernate结合的数据库服务器连接问题的根本原因是有意义的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |