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

4
我们有一个使用最新的NuGet包中的Oracle.ManagedDataAccess.dll和Entity Framework 5的ASP.Net 4.5.2应用程序。文件版本是4.121.1.0,产品版本是4.121.1.20131211。在部署到生产环境(Windows Server 2008 r2 x64)时,一切正常,直到我们需要分布式事务。Oracle文档表明,我们需要提供Oracle.ManagedDataAccessDTC.dll(相同版本,针对特定的x64平台),以便使分布式事务起作用。当加载此dll或其任何依赖项中的一个时出现了指定模块找不到的错误。请查看堆栈跟踪以获取有关该错误的更多信息及其在代码中的来源。具体而言,未找到文件或程序集'Oracle.ManagedDataAccessDTC, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342'或其任何依赖项。

你能否简要地描述一下你的问题,提供一些代码,这样可以更清晰地了解你的工作情况!@weedo - Baqer Naqvi
将 Oracle.ManagedDataAccessDTC.dll 移动到 GAC_32 可以解决未安装 Oracle 的系统问题。确保您正在使用正确版本的 Oracle.ManagedDataAccessDTC.dll。 - Waleed Baig
但是当我尝试在Windows Server 2008上完成这项工作时,仍然遇到同样的问题。 - Waleed Baig
这是我得到解决方案的来源:http://esjqr.com/article.php?id=24043 - Waleed Baig
我已解决了这个问题... 花了我三天的时间才发现我的电脑缺少 Microsoft Visual C++ 2010 Redistributable.. 我安装了它.. 重启了我的IIS.. 现在问题已经解决了。 - Waleed Baig
3个回答

11

0
我的解决方案是停止使用TransactionScope,并删除对System.Transactions的引用,然后问题就消失了。
我可以这样做是因为TransactionScope并没有给我带来任何进一步的性能提升。

那么你如何处理事务? - steven2308
通过使用Entity Framework提供的默认事务 - imekon
如果您需要一次性事务性地更改多个实体,该怎么办呢? - steven2308

-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安全改进。 - justdan23

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接