【问题标题】:Asp.net State Server Unable to Serialize Session StateAsp.net 状态服务器无法序列化会话状态
【发布时间】:2014-01-28 06:46:11
【问题描述】:

我正在使用 StateServer 会话,使所有对象 [Serializable] ,仍然出现错误。问题是什么?

无法序列化会话状态。在“StateServer”和“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许不可序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“自定义”模式下完成类似的序列化,则适用相同的限制。

这是代码...在 Response.Redirect("common/TicklerDisplay

上出现错误
Private Sub btnLogin_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLogin.Click
    Try
        SetOffset()
        strUserName = txtEmaillAdd.Text.Trim
        strPassword = txtPassword.Text.Trim



        Dim strSubscriptionLogin() As String = CCommon.ToString(ConfigurationManager.AppSettings("SubscriptionManagement")).Split("/")
        If strSubscriptionLogin.Length = 2 Then
            If strSubscriptionLogin(0) = strUserName And strSubscriptionLogin(1) = strPassword Then
                Session("DomainID") = 1
                Session("UserContactID") = 1
                Session("PagingRows") = 20
                Session("DateFormat") = "DD/MONTH/YYYY"

                Response.Redirect("Service/frmSerNav.htm", False)
                Exit Sub

            End If
        End If

        If sb_GetDomainUser() = False Then
            Session.Abandon()
            Exit Sub
        End If
    Catch ex As Exception
        ExceptionModule.ExceptionPublish(ex, Session("DomainID"), Session("UserContactID"), Request)
        Response.Write(ex)
        Session.Abandon()
        Exit Sub
    End Try

    If GetQueryStringVal("From") = "Help" Then
        Dim HelpURL As String = ConfigurationManager.AppSettings("HelpURL")

        HelpURL = HelpURL & "?a=" & objCommon.Encrypt(Session("AccessID")) & "&pageurl=" & CCommon.ToString(GetQueryStringVal("pageurl"))
        Response.Redirect(HelpURL)
        Exit Sub
    Else
        Response.Redirect("common/TicklerDisplay.aspx?ClientMachineUTCTimeOffset=" & txtOffset.Text.Trim)
        'HttpContext.Current.ApplicationInstance.CompleteRequest()
    End If
    'Response.Redirect("include/frmMenu.aspx")
End Sub

【问题讨论】:

  • 您能否检查一下设置为可序列化的数据成员的数据类型?由于某些数据类型可能未序列化
  • 请提供一些代码。即使使用 Serializable,也不是所有对象都可以序列化,就像字典一样。

标签: asp.net stateserver


【解决方案1】:

检查引发错误的 Stacktrace。它应该明确地告诉你它不能序列化哪个对象。根据上面的 cmets,并不是所有的对象都可以序列化。

见:How can I find which object in ASP.NET can't be serialized?

【讨论】:

  • 仅供参考,我自己找到了一种解决方法,如果我确实需要序列化一个对象.. 稍后使用状态服务器对其进行反序列化。如果你真的需要这样做,也许会开始一个新问题,Re,如何序列化不可序列化的对象......不要认为将它添加到这个问题中是合适的。
猜你喜欢
  • 2011-09-01
  • 2012-05-07
  • 2013-09-24
  • 2016-08-03
  • 2013-10-24
相关资源
最近更新 更多