2014-09-19 207 views
4

我们采用了最新的Oracle.ManagedDataAccess.dll从的NuGet与实体框架5.无法加载文件或程序集“Oracle.ManagedDataAccessDTC.DLL”或一个依赖

一个ASP.Net应用4.5.2的一个文件版本:4.121.1.0

产品版本:4.121.1.20131211

当部署到生产环境(在Windows Server 2008 R2 x64)的一切工作正常,直到我们需要分布式事务。

Oracle文档声明我们需要提供Oracle.ManagedDataAccessDTC.dll(针对特定平台x64的同一版本),以便使分布式事务正常工作。

无法加载文件或程序集“Oracle.ManagedDataAccessDTC.DLL”或其某个依赖项。指定的模块无法找到。

描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。

异常详细信息:System.IO.FileNotFoundException:无法加载文件或程序集“Oracle.ManagedDataAccessDTC.DLL”或其某个依赖项。指定的模块无法找到。

堆栈跟踪:

[FileNotFoundException异常:未能加载文件或程序集 'Oracle.ManagedDataAccessDTC,版本= 4.121.1.0文化=中性公钥= 89b483f429c47342' 或它的一个依赖。 ]

+0

你能有点简短,以便找到您的实际问题和一些代码工作将提供您的工作的清晰画面! @weedo – 2014-09-19 12:19:48

+0

通过将Oracle.ManagedDataAccessDTC.dll移动到GAC_32来解决未安装Oracle的系统上的问题。确保您使用的是正确版本的Oracle.ManagedDataAccessDTC.dll。 – 2014-09-19 12:35:57

+0

但是还是我有同样的问题,当我尝试做Windows Server 2008的 – 2014-09-19 12:40:56

回答

0

我的解决方案竟然是停止使用的TransactionScope,并转移到System.Transactions的参考,那么问题就走开了。

我可以逃脱这个TransactionScope没有给我任何进一步的性能改进。

+0

那么你如何处理交易? – steven2308 2016-09-23 19:18:55

+0

通过使用实体框架附带的默认事务 – imekon 2016-09-26 15:38:32

+0

如果您需要一次更改多个实体,该怎么办?当然是交易。 – steven2308 2016-09-28 16:53:38

-1

我有几个月的问题,当应用程序使用事务时,我们的产品在某些计算机上会出现问题(比如每10个中就有一个出现问题)。

我试过约翰的答案,问题停止了,但后来我发现那些在任何安装中都无法工作的交易。

最后我到this,在那里你可以看到Oracle.ManagedDataAccessDTC不会在.NET Framework版本4.5.2或更高的版本。我们使用4.5,所以我将这个框架升级到了4.5.2,并且现在它们完美地工作了。

综上所述,将.Net版本升级到4.5.2或更高版本应该可以解决问题。

+0

这也发生在4.6.1上。降级不是一个好的解决方案,因为4.6包含TLS 1.2安全性改进。 – justdan23 2017-11-14 19:49:08

相关问题