asp.net – 分布式事务完成 可以在新事务或NULL事务中登录此会话

前端之家收集整理的这篇文章主要介绍了asp.net – 分布式事务完成 可以在新事务或NULL事务中登录此会话前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
只是好奇,如果有其他人有这个特殊的错误,知道如何解决它?

情况如下:

我们有一个ASP.NET Web应用程序使用在Windows Server 2008 IIS场上运行的Enterprise Library连接到sql Server 2008群集后端。
MSDTC已打开。数据库连接汇总。

我的怀疑是,线上某处有一个失败的MSDTC事务,连接已经返回到池,而另一个页面上的下一个查询正在拾起不正常的连接,并得到这个特定的错误。有趣的是我们在一个不需要分布式事务(提交到两个数据库等)的查询上得到这个错误。当我们收到错误时,我们只做了select query(无事务)。

我们做了sql Profiling,查询运行在sql Server上,但是从来没有回过头(因为MSDTC事务已经在连接中中断了)。

伴随的其他一些相关错误是:

>新请求不允许启动
因为它应该有效
事务描述符。
>内部.Net框架数据提供者错误60。

解决方法

赏金可能有助于获得您所寻求的答案,但如果您提供一些代码示例,并且更好地描述错误发生时,您可能会获得更好的答案。

错误是否间歇性发生?这听起来像你的描述。

您是否在Microsoft建议的使用TransactionScope块中封闭要作为事务完成的关闭?这应该有助于避免奇怪的交易行为。回想一下,使用块确保对象始终被处理,而不管抛出异常。见:http://msdn.microsoft.com/en-us/library/ms172152.aspx

如果您使用TransactionScope,则有一个参数System.TransactionScopeOption.RequiresNew,它告诉框架始终为此代码块创建一个新事务:

06000

此外,如果您怀疑连接发生故障,然后重新连接到连接池,则可能的解决方案是将连接错误代码包含在Try-Catch块中,并将该连接置于catch块中。

猜你在找的asp.Net相关文章