簡體   English   中英

在VB.net中調用方法時發生InvalidCastException異常

[英]InvalidCastException exception while calling the method in VB.net

我在嘗試調用方法時從DB獲取InvalidCastException。 有人可以幫我解決這個問題。 謝謝。

例外:

Execute
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidCastException: [A]Oracle.DataAccess.Client.OracleCommand cannot be cast to [B]Oracle.DataAccess.Client.OracleCommand. Type A originates from 'Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342' in the context 'Default' at location 'C:\Windows\Microsoft.Net\assembly\GAC_64\Oracle.DataAccess\v4.0_4.112.3.0__89b483f429c47342\Oracle.DataAccess.dll'. Type B originates from 'Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342' in the context 'Default' at location 'C:\Windows\assembly\GAC_64\Oracle.DataAccess\2.112.3.0__89b483f429c47342\Oracle.DataAccess.dll'.
   at .DAO.ApplicationDetailsBODataAccess.GetApplicationXmlDataSelectionFactory.ConstructSelectCommand(Database db, ApplicationDetailsBO applicationData) in C:\Projects\Source\\Development\Release19.0\Source\SharedSource\.DAO\ApplicationRepositoryArtifacts\GetApplicationXmlData\GetApplicationXmlDataSelectionFactory.cs:line 37
   at Microsoft.Practices.Repository.Repository`1.Find[TIdentity](ISelectionFactory`1 selectionFactory, IDomainObjectsFactory`1 domainObjectFactory, TIdentity identity) in C:\Projects\Source\iCIS\Common\Source\RepositoryFactory\DataAccess Guidance Package\Microsoft.Practices.Repository\Repository.cs:line 97
   at .DAO.ApplicationDetailsBODataAccess.ApplicationDetailsRepository.GetApplicationXmlData(ApplicationDetailsBO applicationData) in C:\Projects\Source\\Development\Release19.0\Source\SharedSource\.DAO\ApplicationRepositoryArtifacts\ApplicationDetailsRepositoryImplementation.cs:line 103
   at .BWC.ApplicationBWC.GetApplication(ApplicationDetailsBO applicationData) in C:\Projects\Source\\Development\Release19.0\Source\SharedSource\.BWC\ApplicationBWC.vb:line 411
   at .BWC.GatepostBWC.VerifyDemographicInfo(ApplicationDetailsBO applicationDetails) in C:\Projects\Source\\Development\Release19.0\Source\SharedSource\.BWC\GatepostBWC.vb:line 599
   --- End of inner exception stack trace ---
   at MbUnit.Framework.Reflection.Reflector.InvokeMethod(AccessModifier access, Object obj, String methodName, Boolean lookInBase, Object[] methodParams) in c:\RelEng\Projects\MbUnit v3.1\Work\src\MbUnit\MbUnit\Framework\Reflection\Reflector.cs:line 460
   at MbUnit.Framework.Reflection.Reflector.InvokeMethod(AccessModifier access, Object obj, String methodName, Object[] methodParams) in c:\RelEng\Projects\MbUnit v3.1\Work\src\MbUnit\MbUnit\Framework\Reflection\Reflector.cs:line 443
   at MbUnit.Framework.Reflection.Reflector.InvokeMethod(AccessModifier access, String methodName, Object[] methodParams) in c:\RelEng\Projects\MbUnit v3.1\Work\src\MbUnit\MbUnit\Framework\Reflection\Reflector.cs:line 197
   at .BWC.Tests.GatepostBWCTest.verifyDemographicInfoTest() in C:\Projects\Source\\Development\Release19.0\Source\SharedSource\.BWC.Tests\GatepostBWCTest.vb:line 373

通過僅查看異常詳細信息的頂部,您可以注意到您的版本不匹配。 代碼正在嘗試從不同版本的DataAccess.dll中轉換相同類型(OracleCommand):2.112.3.0與4.112.3.0:

無法將[A] Oracle.DataAccess.Client.OracleCommand強制轉換為[B] Oracle.DataAccess.Client.OracleCommand。 類型A源自'Oracle.DataAccess,Version = 4.112.3.0,Culture = neutral,PublicKeyToken = 89b483f429c47342'在上下文'Default'中的位置'C:\\ Windows \\ Microsoft.Net \\ assembly \\ GAC_64 \\ Oracle.DataAccess \\ v4 .0_4.112.3.0__89b483f429c47342 \\ Oracle.DataAccess.dll”。 類型B源自位置'C:\\ Windows \\ assembly \\ GAC_64 \\ Oracle.DataAccess \\ 2.112.3.0__89b483f429c47342 \\ Oracle.DataAccess.dll”。

這兩個DataAccess.dll似乎都來自全局程序集緩存,因此現在的問題是,為什么您的代碼引用了兩個不同的版本。 我假設發布執行實際調用的代碼(第37行GetApplicationXmlDataSelectionFactory.cs)可能會提供更多信息。

編輯:通過查看其余的異常,似乎該錯誤起源於您正在使用的IoC框架(MbUnit)-它在反射中加載了錯誤版本的DataAccess DLL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM