Asp.net 无法将X类型的对象强制转换为X类型
用户随机获得“无法将类型为“X”的对象强制转换为类型为“X”的异常错误。有时,此问题一天会发生几次。有时,我们可以在一周内不出现此问题 我有一个序列化对象(“X”),我在列表“CurrentDetails”和“NextDetails”中填充为“X”。在文本更改事件中,我检查“CurrentDetails”中的一个值,在该值处引发异常。“无法将X类型的对象强制转换为X类型”以下是一些代码示例 文本更改事件(编辑以显示原始数据) 它在txtChange事件的IF语句上抛出了一个错误。有什么想法吗 编辑:原始堆栈数据 堆栈跟踪:在仓库\u SingleUnitPickPack.get\u CurrentSUPPDelivery() 在里面 C:\Inetpub\lawsonwebapps\warehouse\mobile\SingleUnitPickPack.aspx.vb:line 107在仓库\u SingleUnitPickPack.txtPackaging\u文本已更改(对象 发件人,事件参数(e)在 C:\Inetpub\lawsonwebapps\warehouse\mobile\SingleUnitPickPack.aspx.vb:line 249 at System.Web.UI.WebControls.TextBox.OnTextChanged(EventArgs e)at System.Web.UI.WebControl.TextBox.RaisePostDataChangedEvent()位于 System.Web.UI.WebControls.TextBox.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent() 位于System.Web.UI.Page.RaiseChangedEvents()的 System.Web.UI.Page.ProcessRequestMain(布尔值 IncludeStages前同步点,布尔值IncludeStages后同步点) 编辑:“X”-Manager.CurrentDetails…原始名称:SUPPDeliveryAsp.net 无法将X类型的对象强制转换为X类型,asp.net,vb.net,exception,web-site-project,Asp.net,Vb.net,Exception,Web Site Project,用户随机获得“无法将类型为“X”的对象强制转换为类型为“X”的异常错误。有时,此问题一天会发生几次。有时,我们可以在一周内不出现此问题 我有一个序列化对象(“X”),我在列表“CurrentDetails”和“NextDetails”中填充为“X”。在文本更改事件中,我检查“CurrentDetails”中的一个值,在该值处引发异常。“无法将X类型的对象强制转换为X类型”以下是一些代码示例 文本更改事件(编辑以显示原始数据) 它在txtChange事件的IF语句上抛出了一个错误。有什么想法吗 编
<Serializable()> Public Class SUPPDelivery
Private _DeliveryNumber As String
Private _OrderNumber As String
Private _OrderLine As String
Private _TransactionType As String
Private _PackedQty As String
Private _PackageNumber As String
Private _PackageMaterial As String
Private _OrderLineSuffix As String
Private _ItemNumber As String
Private _ItemLocation As String
Public Property DeliveryNumber() As String
Get
Return _DeliveryNumber
End Get
Set(ByVal value As String)
_DeliveryNumber = value
End Set
End Property
Public Property OrderNumber() As String
Get
Return _OrderNumber
End Get
Set(ByVal value As String)
_OrderNumber = value
End Set
End Property
Public Property OrderLine() As String
Get
Return _OrderLine
End Get
Set(ByVal value As String)
_OrderLine = value
End Set
End Property
Public Property TransactionType() As String
Get
Return _TransactionType
End Get
Set(ByVal value As String)
_TransactionType = value
End Set
End Property
Public Property PackedQty() As String
Get
Return _PackedQty
End Get
Set(ByVal value As String)
_PackedQty = value
End Set
End Property
Public Property PackageNumber() As String
Get
Return _PackageNumber
End Get
Set(ByVal value As String)
_PackageNumber = value
End Set
End Property
Public Property PackageMaterial() As String
Get
Return _PackageMaterial
End Get
Set(ByVal value As String)
_PackageMaterial = value
End Set
End Property
Public Property OrderLineSuffix() As String
Get
Return _OrderLineSuffix
End Get
Set(ByVal value As String)
_OrderLineSuffix = value
End Set
End Property
Public Property ItemNumber() As String
Get
Return _ItemNumber
End Get
Set(ByVal value As String)
_ItemNumber = value
End Set
End Property
Public Property ItemLocation() As String
Get
Return _ItemLocation
End Get
Set(ByVal value As String)
_ItemLocation = value
End Set
End Property
End Class
公共类交付
Private\u DeliveryNumber作为字符串
Private\u OrderNumber作为字符串
Private\u订单行作为字符串
Private _TransactionType作为字符串
专用包装数量为字符串
Private _PackageNumber作为字符串
作为字符串的专用包装材料
Private\u OrderLineSuffix作为字符串
Private\u ItemNumber作为字符串
Private\u ItemLocation作为字符串
公共属性DeliveryNumber()作为字符串
收到
返回_DeliveryNumber
结束
设置(ByVal值作为字符串)
_DeliveryNumber=值
端集
端属性
公共属性OrderNumber()作为字符串
收到
返回\u订单号
结束
设置(ByVal值作为字符串)
_OrderNumber=值
端集
端属性
公共属性OrderLine()作为字符串
收到
退货订单行
结束
设置(ByVal值作为字符串)
_订单行=价值
端集
端属性
公共属性TransactionType()作为字符串
收到
返回\u事务类型
结束
设置(ByVal值作为字符串)
_TransactionType=值
端集
端属性
公共属性PackedQty()作为字符串
收到
退货包装数量
结束
设置(ByVal值作为字符串)
_包装数量=价值
端集
端属性
公共属性PackageNumber()作为字符串
收到
返回_PackageNumber
结束
设置(ByVal值作为字符串)
_PackageNumber=值
端集
端属性
公共属性PackageMaterial()作为字符串
收到
返回包装材料
结束
设置(ByVal值作为字符串)
_包装材料=价值
端集
端属性
公共属性OrderLineSuffix()作为字符串
收到
Return\u OrderLineSuffix
结束
设置(ByVal值作为字符串)
_OrderLineSuffix=值
端集
端属性
公共属性ItemNumber()作为字符串
收到
返回_ItemNumber
结束
设置(ByVal值作为字符串)
_ItemNumber=值
端集
端属性
公共属性ItemLocation()作为字符串
收到
返回项目位置
结束
设置(ByVal值作为字符串)
_ItemLocation=值
端集
端属性
末级
可能有两种不同的X
类型具有相同的名称。服务器是否正在重新启动?是否有任何内容正在重新部署?是否存在运行不同版本的恶意服务器?类型是否在强名称程序集中?程序集版本号是否在更改时更新?是否在动态编译的代码中定义了X
您的setter有一个尾随空格-这在您的代码中吗?Me.ViewState(“CurrentDetails”)
。您还为属性和类型指定了相同的名称-编译器可能会遇到问题吗?查看管理器。GetSomething
的外观会有帮助,调用堆栈也会有帮助,并知道是什么。通常,我在AppDomain转换期间见过很多次这种情况ns.您有一个类型为X
的对象存储在会话状态或其他状态,但您的代码正在新的AppDomain中运行,并且X
现在是另一种类型,即使它具有相同的名称。请查明当时应用程序是否有任何更改。检查IIS和Windows事件日志。在事件日志。你打开了吗?有AppDomain重新启动的事件。@JohnSaunders我甚至尝试过在隐藏字段中放置一个键,并尝试用该键重新填充对象,但它仍然崩溃。我假设它崩溃是因为它不知道已加载的信息是什么……我想这就是我试图找出的答案不是这一点。到底是什么原因导致了这个错误,如果我可以尝试重新填充对象,甚至清除它。我甚至做了一次尝试捕捉,它仍然存在
Private Property CurrentSUPPDelivery() As WarehouseManager.SUPPDelivery
Get
Return Me.ViewState("CurrentSUPPDelivery")
End Get
Set(ByVal value As WarehouseManager.SUPPDelivery)
Me.ViewState("CurrentSUPPDelivery") = value
End Set
End Property
<Serializable()> Public Class SUPPDelivery
Private _DeliveryNumber As String
Private _OrderNumber As String
Private _OrderLine As String
Private _TransactionType As String
Private _PackedQty As String
Private _PackageNumber As String
Private _PackageMaterial As String
Private _OrderLineSuffix As String
Private _ItemNumber As String
Private _ItemLocation As String
Public Property DeliveryNumber() As String
Get
Return _DeliveryNumber
End Get
Set(ByVal value As String)
_DeliveryNumber = value
End Set
End Property
Public Property OrderNumber() As String
Get
Return _OrderNumber
End Get
Set(ByVal value As String)
_OrderNumber = value
End Set
End Property
Public Property OrderLine() As String
Get
Return _OrderLine
End Get
Set(ByVal value As String)
_OrderLine = value
End Set
End Property
Public Property TransactionType() As String
Get
Return _TransactionType
End Get
Set(ByVal value As String)
_TransactionType = value
End Set
End Property
Public Property PackedQty() As String
Get
Return _PackedQty
End Get
Set(ByVal value As String)
_PackedQty = value
End Set
End Property
Public Property PackageNumber() As String
Get
Return _PackageNumber
End Get
Set(ByVal value As String)
_PackageNumber = value
End Set
End Property
Public Property PackageMaterial() As String
Get
Return _PackageMaterial
End Get
Set(ByVal value As String)
_PackageMaterial = value
End Set
End Property
Public Property OrderLineSuffix() As String
Get
Return _OrderLineSuffix
End Get
Set(ByVal value As String)
_OrderLineSuffix = value
End Set
End Property
Public Property ItemNumber() As String
Get
Return _ItemNumber
End Get
Set(ByVal value As String)
_ItemNumber = value
End Set
End Property
Public Property ItemLocation() As String
Get
Return _ItemLocation
End Get
Set(ByVal value As String)
_ItemLocation = value
End Set
End Property
End Class