[英]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.