在 IIS 上部署时,Lightswitch 应用程序找不到 'Oracle.ManagedDataAccessDTC'

Lightswitch Application fails to find 'Oracle.ManagedDataAccessDTC' when deployed on IIS

我在 Visual Studio 2013 年创建了一个没有自定义代码的基本 HTML Lightswitch 应用程序。它连接到 Oracle 数据库并在本地运行良好。

我将应用程序部署到带有 IIS 的服务器,当我导航到我创建的 url 时应用程序加载,但在应用程序正常显示值列表之前我收到 "The underlying provider failed on EnlistTransaction" 错误Oracle 数据库。

我运行 一个堆栈跟踪发现以下错误。该应用似乎未找到 Oracle 数据访问客户端(Oracle.ManagedDataAccessDTC):

[Microsoft.LightSwitch.DataService][Application:Error]
[LightSwitchServiceApplication.P167:CON_APP_TAXes] An exception has occurred:  
Microsoft.LightSwitch.DataServiceOperationException: The underlying provider 
failed on EnlistTransaction. ---> System.Data.EntityException: The underlying 
provider failed on EnlistTransaction. ---> 
System.TypeInitializationException: The type initializer for 
'OracleInternal.MTS.DTCPSPEManager' threw an exception. ---> 
System.IO.FileNotFoundException: 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.

我使用 ODAC 12c 第 4 版 (12.1.0.2) 安装程序在本地计算机上安装了 Oracle Data Access 客户端,其中包括 Oracle.ManagedDataAccessDTC.

我确认我的机器和服务器安装了相同版本的Oracle.ManagedDataAccessDTC。

通过将我的数据源驱动程序类型从 Oracle 数据库(ODP.NET、托管驱动程序)切换到 Oracle 数据库(ODP.NET、非托管驱动程序)解决了这个问题。