You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET应用32位转64位后出现类型转换异常求助

VB.NET桌面应用32位转64位后类型转换异常问题

问题背景

  • 应用采用三层架构:VB.NET独立应用程序、Broker Service、WCF Service
  • 调用流程:VB.NET独立应用调用Broker Service,Broker Service再调用WCF Service连接数据库
  • 所有项目已转换为64位并发布到Web服务器,32位模式运行正常,64位模式运行时抛出异常

核心错误信息

System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.InvalidCastException: 无法将类型为“NavigatorMD.Core.Broker.CurrentUserSerializable”的对象强制转换为类型“NavigatorMD.BusinessLogic.CurrentUserSerializable”。

完整错误堆栈

System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.InvalidCastException: 无法将类型为“Project.Core.Broker.CurrentUserSerializable”的对象强制转换为类型“Project.BusinessLogic.CurrentUserSerializable”。
在 Project.Core.ServiceProxy.GetUserInfo(String productId) 位置 D:\GitHub Source codes\Prj_D180 - Devexpress 18 - Copy\Core\Data Objects\ServiceProxy.vb:行号 934
在 Project.Core.CurrentUser.GetUserInfo(ApplicationMap& _applicationMap) 位置 D:\GitHub Source codes\Prj_D180 - Devexpress 18 - Copy\Core\Data Objects\CurrentUser.vb:行号 471
在 Project.Core.CurrentUser.AuthenticateUser(String LicenseKey, ApplicationMap& _applicationMap) 位置 D:\GitHub Source codes\Prj_D180 - Devexpress 18 - Copy\Core\Data Objects\CurrentUser.vb:行号 261
在 Project.MainForm.IsUserAuthenticated() 位置 D:\GitHub Source codes\Prj_D180 - Devexpress 18 - Copy\Project\MainForm.vb:行号 347
在 Project.MainForm..ctor() 位置 D:\GitHub Source codes\Prj_D180 - Devexpress 18 - Copy\Project\MainForm.vb:行号 182
--- 内部异常堆栈跟踪的结尾 ---
在 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
在 System.Reflection.RuntimeConstructorInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
在 Microsoft.Practices.ObjectBuilder.CreationStrategy.InitializeObject(IBuilderContext context, Object existing, String id, ICreationPolicy policy)
在 Microsoft.Practices.ObjectBuilder.CreationStrategy.BuildUpNewObject(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild)
在 Microsoft.Practices.ObjectBuilder.CreationStrategy.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild)
在 Microsoft.Practices.ObjectBuilder.ReflectionStrategy1.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild) 在 Microsoft.Practices.ObjectBuilder.ReflectionStrategy1.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild)
在 Microsoft.Practices.ObjectBuilder.ReflectionStrategy1.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild) 在 Microsoft.Practices.ObjectBuilder.SingletonStrategy.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild) 在 Microsoft.Practices.ObjectBuilder.TypeMappingStrategy.BuildUp(IBuilderContext context, Type t, Object existing, String id) 在 Microsoft.Practices.ObjectBuilder.BuilderBase1.DoBuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList[] transientPolicies)
在 Microsoft.Practices.ObjectBuilder.BuilderBase1.BuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList[] transientPolicies) 在 Microsoft.Practices.CompositeUI.Collections.ManagedObjectCollection1.BuildFirstTimeItem(Type typeToBuild, String idToBuild, Object item)
在 Microsoft.Practices.CompositeUI.Collections.ManagedObjectCollection1.Build(Type typeToBuild, String idToBuild, Object item) 在 Microsoft.Practices.CompositeUI.Collections.ManagedObjectCollection1.AddNewTTypeToBuild
在 Microsoft.Practices.CompositeUI.CabShellApplication2.OnRootWorkItemInitialized() 在 Microsoft.Practices.CompositeUI.BuilderStrategies.RootWorkItemInitializationStrategy.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild) 在 Microsoft.Practices.CompositeUI.BuilderStrategies.CommandStrategy.BuildUp(IBuilderContext context, Type t, Object existing, String id) 在 Microsoft.Practices.CompositeUI.BuilderStrategies.EventBrokerStrategy.BuildUp(IBuilderContext context, Type t, Object existing, String id) 在 Microsoft.Practices.ObjectBuilder.MethodExecutionStrategy.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild) 在 Microsoft.Practices.ObjectBuilder.PropertySetterStrategy.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild) 在 Microsoft.Practices.ObjectBuilder.CreationStrategy.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild) 在 Microsoft.Practices.ObjectBuilder.ReflectionStrategy1.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild)
在 Microsoft.Practices.ObjectBuilder.ReflectionStrategy1.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild) 在 Microsoft.Practices.ObjectBuilder.ReflectionStrategy1.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild)
在 Microsoft.Practices.ObjectBuilder.SingletonStrategy.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild)
在 Microsoft.Practices.ObjectBuilder.TypeMappingStrategy.BuildUp(IBuilderContext context, Type t, Object existing, String id)
在 Microsoft.Practices.ObjectBuilder.BuilderBase1.DoBuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList[] transientPolicies) 在 Microsoft.Practices.ObjectBuilder.BuilderBase1.BuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList[] transientPolicies)
在 Microsoft.Practices.CompositeUI.WorkItem.BuildUp()
在 Microsoft.Practices.CompositeUI.CabApplication`1.Run()
在 Project.MainProg.Main() 位置 D:\GitHub Source codes\Prj_D180 - Devexpress 18 - Copy\Project\MainProgram.vb:行号 14

相关源代码

Public Shared Function GetUserInfo(ByVal productId As String) As CurrentUserSerializable 
    Dim args(6) As Object 
    SetupArgs(args) 
    args(0) = "getuserinfo" 
    args(4) = args(3) 
    args(5) = productId 
 
    Dim retVal As Object = BrokerService.ProcessRequest(args, False) 
    Return CType(retVal, CurrentUserSerializable) 
End Function

Public Function ProcessRequest(ByRef args() As Object, ByVal noConnectionStringNeeded As Boolean) As Object 
    Dim inValue As Broker.ProcessRequestRequest = New Broker.ProcessRequestRequest() 
    inValue.args = args 
    inValue.noConnectionStringNeeded = noConnectionStringNeeded 
    Dim retVal As Broker.ProcessRequestResponse = CType(Me,Broker.IBroker).ProcessRequest(inValue) 
    args = retVal.args 
    Return retVal.ProcessRequestResult 
End Function 

怀疑方向

怀疑GetUserInfo()函数未返回正确类型的值,导致强制转换失败。


内容的提问来源于stack exchange,提问作者Harsha W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 15:04:58