Asp.net 如何让用户对象序列化以存储在StateServer中
实际问题和疑问: 当我将sessionState模式从InProc切换到StateServer时,web服务器抛出序列化错误。我需要更改什么才能使其正常工作 技术: ASP.Net中的vb.Net和C#,IIS7,框架4 详细信息: 我们正在将ASP.Net网站的会话状态模式从InProc切换到StateServer。这是我们正在做的几个更改之一,以便能够在同一服务器上的两个web应用程序之间共享会话ID和会话信息。承载网站的服务器也将运行ASP.Net状态服务 在主站点的web.config文件中切换sessionState的模式时,出现服务器错误:Asp.net 如何让用户对象序列化以存储在StateServer中,asp.net,serialization,enums,session-state,Asp.net,Serialization,Enums,Session State,实际问题和疑问: 当我将sessionState模式从InProc切换到StateServer时,web服务器抛出序列化错误。我需要更改什么才能使其正常工作 技术: ASP.Net中的vb.Net和C#,IIS7,框架4 详细信息: 我们正在将ASP.Net网站的会话状态模式从InProc切换到StateServer。这是我们正在做的几个更改之一,以便能够在同一服务器上的两个web应用程序之间共享会话ID和会话信息。承载网站的服务器也将运行ASP.Net状态服务 在主站点的web.config文
Invalid cast from 'System.Int32' to 'OurCompany.OurApp.Objects.User+enUserType'.
用户类被声明为可序列化,并且始终是我们在会话中存储用户时使用的:
<System.ComponentModel.DesignerCategory("Code"), SerializableAttribute()> Public Class User
Inherits BaseClass
Implements System.Runtime.Serialization.ISerializable
和公共财产:
Public Property UserType() As enUserType
Get
Return m_iUserType
End Get
Set(ByVal Value As enUserType)
m_iUserType = Value
End Set
End Property
这些并没有特别标记为可序列化,但据我所知,它们不需要。以防万一,我用标记为可序列化的代码对其进行了测试,但没有解决问题
如果我将sessionState模式切换回InProc,它就可以正常工作。我的印象是,如果您的对象为InProc正确序列化,那么它们也应该为StateServer工作。我是根据我读过的其他人的问题和答案来做出这个假设的,但这可能是错误的
如果my web.config配置不正确,sessionState标记的外观如下所示:
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false"/>
我已经在web服务器上启动了ASP.Net状态服务服务器,并检查了注册表中的配置,以确保它正在侦听默认端口42424,并且是
如果您认为还有其他相关的细节,请让我知道,我会把它们添加进去
谢谢
-贝普
其他信息
在阅读了EdSF建议的其他一些文章之后,我添加了XmlAttribute XmlEnum,但这没有帮助。我尝试了一些其他的建议,没有得到任何不同的结果
这让我放弃了一些关于问题所在的假设,我在类代码中找到了一个地方,在那里对序列化信息进行了一些转换,这就是问题所在。您正试图将枚举序列化为int(异常)。看看是否有帮助。@EdSF谢谢。让我在你链接的文章中尝试一些东西,让我意识到我试图修复代码中错误的东西。
Public Property UserType() As enUserType
Get
Return m_iUserType
End Get
Set(ByVal Value As enUserType)
m_iUserType = Value
End Set
End Property
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false"/>