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="DATA SOURCE=(DESCRIPTION=(ADDRESS = (PROTOCOL
= TCP)(HOST = <>)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = <>)));PASSWORD=<>;PERSIST SECURITY INFO=True;USER ID=<>"" 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 错误的主要内容,如果未能解决你的问题,请参考以下文章