OracleInternal.MTS.DTCPSPEManager 错误

Posted

技术标签:

【中文标题】OracleInternal.MTS.DTCPSPEManager 错误【英文标题】:OracleInternal.MTS.DTCPSPEManager Error 【发布时间】:2015-09-06 19:34:59 【问题描述】:

仅当在代码中使用 TransactionScope 时才会出现此错误。如果没有 TransactionScope,它对我来说工作正常。

这是使用实体框架连接 Oracle 数据库的 ASP.NET 应用程序。详情如下。

<configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

<connectionStrings>
    <add name="MyEntities" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string=&quot;DATA SOURCE=(DESCRIPTION=(ADDRESS = (PROTOCOL
= TCP)(HOST = <>)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = <>)));PASSWORD=<>;PERSIST SECURITY INFO=True;USER ID=<>&quot;" providerName="System.Data.EntityClient" /> </connectionStrings>

异常 = The type initializer for 'OracleInternal.MTS.DTCPSPEManager' threw an exception.

InnerException = "Could not load file or assembly 'Oracle.ManagedDataAccessDTC, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. The system cannot find the file specified.":"Oracle.ManagedDataAccessDTC, Version=4.121.2.0, Cul...

堆栈跟踪 at OracleInternal.MTS.DTCPSPEManager..ctor(OracleConnectionImpl connImpl, Transaction txn, MTSTxnRM txnRM, MTSTxnBranch txnBranch) at OracleInternal.MTS.PSPEManager.Create(OracleConnectionImpl connImpl, Transaction txn, MTSTxnRM txnRM, MTSTxnBranch txnBranch) at OracleInternal.MTS.MTSRMManager.EnlistTransaction(OracleConnectionImpl connImpl, Transaction transaction, MTSTxnRM txnRM, MTSTxnBranch txnBranch) at OracleInternal.MTS.MTSRMManager.EnlistTransaction(OracleConnectionImpl connImpl, Transaction transaction) at OracleInternal.ConnectionPool.PoolManager3.GetEnlisted(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp) at OracleInternal.ConnectionPool.OracleConnectionDispenser3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword) at Oracle.ManagedDataAccess.Client.OracleConnection.Open()

请帮我解决这个问题。 提前致谢。

【问题讨论】:

【参考方案1】:

我将 Oracle.ManagedDataAccessDTC.dll 复制到 bin 文件夹中,这将解决此问题。

E:\app\client\<user>\product\12.1.0\client_1\odp.net\managed\x86\Oracle.ManagedDataAccessDTC.dll

谢谢。

【讨论】:

进入 bin 文件夹 从您的项目,而不是从 Oracle 客户端!【参考方案2】:

在我的情况下(没有 EF)将 .net 框架 4.5 更新到 4.5.2 解决了这个问题。 无需额外的 dll,一切正常。

【讨论】:

以上是关于OracleInternal.MTS.DTCPSPEManager 错误的主要内容,如果未能解决你的问题,请参考以下文章