c# - Devart.Data.Oracle.OracleConnection 在服务器上运行时无法转换为...
问题描述
我正在使用 oracle 数据库和实体框架 6.0 在 vs2012 中开发,使用 Devart.Data.Oracle 连接到数据库。在上次部署中,我收到此错误,“Devart.Data.Oracle.OracleConnection 无法强制转换为...”仅在服务器上运行时。在本地机器+调试模式下,一切正常。
我猜它与 Devart 或 Entityframework 升级有关,可能与 app.config 文件有关。但所有尝试都失败了。完整的错误消息:批处理控制台:[A]Devart.Data.Oracle.OracleConnection 无法转换为 [B]Devart.Data.Oracle.OracleConnection。类型 A 源自 \'Devart.Data.Oracle, Version=8.1.36.0, Culture=neutral, PublicKeyToken=09af7300eec23701' 在上下文 'Default' 的位置 \'C:\Windows\assembly\GAC_MSIL\Devart.Data.Oracle \8.1.36.0__09af7300eec23701\Devart.Data.Oracle.dll'。类型 B 源自 'Devart\ .Data.Oracle, Version=9.7.770.0, Culture=neutral, PublicKeyToken=09af7300eec23701' 在上下文 'Default' 的位置 '\vsrvmink\ un\VMIKUN\mikunjr\PVN\ctm01_mushlach_yomi\test\ Status_Tst\Devart.Data.Oracle.dll'。
配置文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="ParallelRun.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="ParallelRun.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<connectionStrings>
<add name="PVNEntitiesConnectionString" connectionString="metadata=res://*/DataModelContex.csdl|res://*/DataModelContex.ssdl|res://*/DataModelContex.msl;provider=Devart.Data.Oracle;provider connection string="User Id=pvn;Password=pvn;Server=test;Direct=True;Sid=test;Persist Security Info=True"" providerName="System.Data.EntityClient"/>
<userSettings>
<ParallelRun.Properties.Settings>
<setting name="DeleteBeforeRun" serializeAs="String">
<value>delete from pvn_tnuot</value>
</setting>
<setting name="DeleteBeforeDS" serializeAs="String">
<value />
</setting>
<setting name="ExportCommand" serializeAs="String">
<value />
</setting>
</ParallelRun.Properties.Settings>
</userSettings>
<system.data>
<DbProviderFactories>
<!--<remove invariant="Devart.Data.Oracle"/>
<add name="dotConnect for Oracle" invariant="Devart.Data.Oracle" description="Devart dotConnect for Oracle" type="Devart.Data.Oracle.OracleProviderFactory, Devart.Data.Oracle, Version=9.7.770.0, Culture=neutral, PublicKeyToken=09af7300eec23701"/>-->
</DbProviderFactories>
</system.data>
<entityFramework>
<providers>
<provider invariantName="Devart.Data.Oracle" type="Devart.Data.Oracle.Entity.OracleEntityProviderServices, Devart.Data.Oracle.Entity.EF6, Version=9.7.770.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
</providers>
</entityFramework>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
<applicationSettings>
<ParallelRun.Properties.Settings>
<setting name="LogFileName" serializeAs="String">
<value>BatchLogTs</value>
</setting>
</ParallelRun.Properties.Settings>
</applicationSettings>
</configuration>
打开与数据库的连接的第一行代码非常简单:
int bankscounter = DataAccess.Instance.CountBanks();
此时所有连接组件都已加载,我收到此错误。欢迎任何帮助/建议。
解决方案
- 检查全局和应用程序配置文件中的提供程序注册:https ://forums.devart.com/viewtopic.php?t=33320#p115587 。
- 您的 GAC 中有文件
Devart.*
吗?policy.*.Devart.*
- 检查应用程序文件夹和 GAC 中的 Devart.* 程序集的版本。
推荐阅读
- reporting-services - 如何将图像从 Google Drive 嵌入到 SSRS 但图像处于私有模式(需要身份验证才能访问此图像)?
- .htaccess - 当 URL 有连字符和斜杠时,.htaccess 301 重定向无法正常工作
- lua - 我可以从另一个导入的 lua 脚本访问我的 lua 脚本中的变量吗?
- haskell - getArgs 字符串到 int
- google-cloud-platform - 将应用程序部署到谷歌应用程序引擎时生成错误
- apache-spark - Spark Streaming 数据集 Cassandra 连接 UnsupportedOperationChecker
- gnuplot - Gnuplot参数和数据?
- java - 我什么时候使用 BufferedInputStream?
- javascript - 使用没有 redux 的反应导航 5 时如何从另一个上下文中获取结果?
- typescript - 在 TypeScript 中为接受数字并返回字符串的函数编写类型