gpt4 book ai didi

c# - TransactionScope - 基础提供程序在 EnlistTransaction 上失败。 MSDTC 被中止

转载 作者:可可西里 更新时间:2023-11-01 07:58:06 27 4
gpt4 key购买 nike

我们的团队遇到了一个问题,表现为:

The underlying provider failed on EnlistTransaction; Cannot access a disposed object.Object name: 'Transaction'.

enter image description here

它似乎在我们开始使用 TransactionScope 时就出现了处理我们应用程序的事务。

堆栈跟踪的顶部被捕获为:

at System.Data.EntityClient.EntityConnection.EnlistTransaction(Transaction transaction) at System.Data.Objects.ObjectContext.EnsureConnection() at System.Data.Objects.ObjectContext.ExecuteStoreCommand(String commandText, Object[] parameters) at Reconciliation.Models.BillLines.BillLines.Reconciliation.Interfaces.IBillLineEntities.ExecuteStoreCommand(String, Object[]) at Reconciliation.Models.Legacy.EntityDbEnvironment.ExecuteOracleSql(String sql) in EntityDbEnvironment.cs: line 41

同时更新了 MSDTC 日志,这是我使用 instructions here 提取的:

pid=7060       ;tid=7908       ;time=04/29/2013-16:38:30.269   ;seq=136        ;eventid=TRANSACTION_BEGUN                        ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e     ;"TM Identifier='(null)                                            '" ;"transaction has begun, description :'<NULL>'"
pid=7060 ;tid=7908 ;time=04/29/2013-16:38:30.269 ;seq=137 ;eventid=RM_ENLISTED_IN_TRANSACTION ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e ;"TM Identifier='(null) '" ;"resource manager #1002 enlisted as transaction enlistment #1. RM guid = 'defc4277-47a6-4cd9-b092-93a668e2097b'"
pid=7060 ;tid=7908 ;time=04/29/2013-16:38:31.658 ;seq=138 ;eventid=RECEIVED_ABORT_REQUEST_FROM_BEGINNER ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e ;"TM Identifier='(null) '" ;"received request to abort the transaction from beginner"
pid=7060 ;tid=7908 ;time=04/29/2013-16:38:31.658 ;seq=139 ;eventid=TRANSACTION_ABORTING ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e ;"TM Identifier='(null) '" ;"transaction is aborting"
pid=7060 ;tid=7908 ;time=04/29/2013-16:38:31.658 ;seq=140 ;eventid=RM_ISSUED_ABORT ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e ;"TM Identifier='(null) '" ;"abort request issued to resource manager #1002 for transaction enlistment #1"
pid=7060 ;tid=7908 ;time=04/29/2013-16:38:31.658 ;seq=141 ;eventid=RM_ACKNOWLEDGED_ABORT ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e ;"TM Identifier='(null) '" ;"received acknowledgement of abort request from the resource manager #1002 for transaction enlistment #1"
pid=7060 ;tid=7908 ;time=04/29/2013-16:38:31.658 ;seq=142 ;eventid=TRANSACTION_ABORTED ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e ;"TM Identifier='(null) '" ;"transaction has been aborted"

您可以在 RM_ENLISTED_IN_TRANSACTION 记录后一秒看到 RECEIVED_ABORT_REQUEST_FROM_BEGINNER

我们无法理解此中止请求的来源或提出原因。导致问题的 SQL 是一个简单的 SELECT,我们可以通过我们的数据库客户端毫无问题地执行它。

该应用程序大部分时间 都可以正常工作,只是偶尔显示此问题。

我们使用带有 Entity Framework 的 Oracle 10.2.0.5.0。

更新

根据@Astrotrain 的建议,我在 System.Transactions 上设置了日志记录。不过,最终生成的条目确实被中途截断了:

....
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/2004/06/System/Transactions/TransactionScopeCreated</TraceIdentifier>
<Description>TransactionScope Created</Description>
<AppDomain>BillLineGeneratorUI.exe</AppDomain>
<ExtendedData xmlns="http://schemas.microsoft.com/2004/03/Transactions/TransactionScopeCreatedTraceRecord">
<TraceSource>[Base]

如您所见,异常实际上阻止了日志完成。我能从中学到什么?有什么想法吗?

最佳答案

我可以推荐使用 System.Transactions 跟踪源,而不是使用 MSDTC 跟踪工具(我觉得它非常简陋)——只需在您的 web.config 中包含以下内容:
如果您使用 SvcTraceViewer.exe 打开日志文件,您将获得一个漂亮的步骤可视化表示。

<configuration>
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.Transactions" switchValue="Information">
<listeners>
<add name="tx"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\MyApp-transactions-log.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>

本身不是解决方案,但这可能会为您提供有关问题所在的更多信息。

关于c# - TransactionScope - 基础提供程序在 EnlistTransaction 上失败。 MSDTC 被中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16283524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com