2014-01-28 2 views
-1

Я использую сеанс StateServer, сделал весь объект [Serializable], все еще получая ошибку. В чем была проблема?Asp.net State Server Не удалось выполнить сериализацию состояния сеанса

Невозможно сериализовать состояние сеанса. В режиме «StateServer» и «SQLServer» ASP.NET будет сериализовать объекты состояния сеанса, и в результате не разрешаются объекты, не связанные с сериализацией, или объекты MarshalByRef. Такое же ограничение применяется, если аналогичная сериализация выполняется в пользовательском хранилище состояний сеанса в режиме «Пользовательский».

Вот код ... получает ошибку на Response.Redirect ("общее/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 
+0

можете ли вы проверить, что тип данных дата-членов, которые устанавливаются как сериализуемый поскольку некоторые из типов данных? не может быть сериализован –

+0

Некоторый код, пожалуйста. Не все объекты, даже с Serializable, могут быть сериализованы, как Словарь. – Aristos

ответ

0

Проверьте StackTrace, где он бросает ошибку. Он должен сказать вам все тоже, какой объект он наклоняет сериализацию. в соответствии с комментариями выше, не все объект может быть сериализовать

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

+0

FYI, я сам нашел, обходное решение, если мне действительно нужно сериализовать объект .. де-сериализуйте его позже, используя stateerver. Если вам действительно нужно это сделать, можете начать новый вопрос: Re, как сериализовать несериализуемые объекты ... не считайте нужным добавить его к этому вопросу. –

Смежные вопросы