我在 Visual Studio 2013 中创建了一个没有自定义代码的基本 HTML Lightswitch 应用程序。它连接到 Oracle 数据库并在本地运行良好。
我将应用程序部署到带有 IIS 的服务器,并且在导航创建的 url 时加载应用程序,但在应用程序通常显示 Oracle 数据库中的值列表之前,我收到“底层提供程序在 EnlistTransaction 上失败”错误。
我运行堆栈跟踪以找到以下错误。看起来应用程序没有找到 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.
我使用包含 Oracle.ManagedDataAccessDTC 的 ODAC 12c Release 4(12.1.0.2) 安装程序在本地机器上安装了 Oracle 数据访问客户端。
我验证我的机器和服务器安装了相同版本的 Oracle.ManagedDataAccessDTC。