Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何让用户对象序列化以存储在StateServer中_Asp.net_Serialization_Enums_Session State - Fatal编程技术网

Asp.net 如何让用户对象序列化以存储在StateServer中

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文

实际问题和疑问:

当我将sessionState模式从InProc切换到StateServer时,web服务器抛出序列化错误。我需要更改什么才能使其正常工作

技术:

ASP.Net中的vb.Net和C#,IIS7,框架4

详细信息:

我们正在将ASP.Net网站的会话状态模式从InProc切换到StateServer。这是我们正在做的几个更改之一,以便能够在同一服务器上的两个web应用程序之间共享会话ID和会话信息。承载网站的服务器也将运行ASP.Net状态服务

在主站点的web.config文件中切换sessionState的模式时,出现服务器错误:

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"/>