无法加载文件或程序集“Oracle.ManagedDataAccessDTC.DLL”或其依赖项之一

Posted

技术标签:

【中文标题】无法加载文件或程序集“Oracle.ManagedDataAccessDTC.DLL”或其依赖项之一【英文标题】:Could not load file or assembly 'Oracle.ManagedDataAccessDTC.DLL' or one of its dependencies 【发布时间】:2014-09-19 07:53:46 【问题描述】:

我们有一个 ASP.Net 4.5.2 应用程序,它使用来自 nuget 的最新 Oracle.ManagedDataAccess.dll 和 Entity Framework 5。

文件版本:4.121.1.0

产品版本:4.121.1.20131211

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

Oracle 文档指出,我们需要提供 Oracle.ManagedDataAccessDTC.dll(相同版本,适用于特定平台 x64)才能使分布式事务正常工作。

。找不到指定的模块。

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

异常详细信息:System.IO.FileNotFoundException:。找不到指定的模块。

堆栈跟踪:

[FileNotFoundException:无法加载文件或程序集“Oracle.ManagedDataAccessDTC,版本=4.121.1.0,Culture=neutral,PublicKeyToken=89b483f429c47342”或其依赖项之一。 ]

【问题讨论】:

你能不能简短一点,以便找到你的实际问题,一点代码工作将提供你工作的清晰画面! @weedo 未安装 Oracle 的系统上的问题通过将 Oracle.ManagedDataAccessDTC.dll 移动到 GAC_32 来解决。确保您使用的是正确版本的 Oracle.ManagedDataAccessDTC.dll。 但是当我尝试在 Windows Server 2008 上进行这项工作时,我仍然遇到同样的问题 这是我获得解决方案的来源:esjqr.com/article.php?id=24043 好吧,我已经解决了这个问题。我花了 3 天的时间才发现我的计算机中缺少 Microsoft Visual C++ 2010 Redistributable。我已经安装了它。重新启动我的 IIS 和我的问题解决了。 【参考方案1】:

安装 Microsoft Visual C++ 2010 Redistributable。

如果您的服务器是 Windows Server 2008 R2 x64,请从此页面安装: http://www.microsoft.com/en-us/download/details.aspx?id=14632 SP1 不适用于此服务器。

如果您的服务器是 Windows Server 2012 x64,请从此页面安装: http://www.microsoft.com/en-us/download/details.aspx?id=13523

【讨论】:

【参考方案2】:

结果我的解决方案是停止使用 TransactionScope,并删除对 System.Transactions 的引用,然后问题就消失了。

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

【讨论】:

那么你们是如何处理交易的呢? 使用实体框架自带的默认事务 如果您需要一次更改多个实体怎么办?当然是交易。【参考方案3】:

这个问题我已经有几个月的时间了,当应用程序使用事务时,我们的产品会在某些计算机中出现问题(比如每 10 台计算机中有 1 台)。

我尝试了 John 的回答,但问题停止了,但后来我注意到在任何安装中,事务都不再工作了。

最后我找到了this,您可以在其中看到 Oracle.ManagedDataAccessDTC 不会在 .NET Framework 4.5.2 或更高版本中使用。我们使用的是 4.5,所以我在两台有这个问题的计算机上将框架升级到了 4.5.2,现在它们可以正常工作了。

所以总结一下,将.Net版本升级到4.5.2或更高版本应该可以解决问题。

【讨论】:

4.6.1 也会出现这种情况。降级不是一个好的解决方案,因为 4.6 包含 TLS 1.2 的安全改进。

以上是关于无法加载文件或程序集“Oracle.ManagedDataAccessDTC.DLL”或其依赖项之一的主要内容,如果未能解决你的问题,请参考以下文章

无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0

无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配

无法加载文件或程序集'netstandard,版本 = 2.0.0.0

无法加载文件或程序集 此处的程序集名称 或其依赖项之一。访问被拒绝

无法加载文件或程序集或其依赖项之一

寻找解决策略:无法加载文件或程序集[重复]