zoukankan      html  css  js  c++  java
  • 无法序列化会话状态。请注意,当会话状态模式为“StateServer”或“SQLServer”时,不允许使用无法序列化的对象或 MarshalByRef 对象。

    无法序列化会话状态。请注意,当会话状态模式为“StateServer”或“SQLServer”时,不允许使用无法序列化的对象或 MarshalByRef 对象。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Web.HttpException: 无法序列化会话状态。请注意,当会话状态模式为“StateServer”或“SQLServer”时,不允许使用无法序列化的对象或 MarshalByRef 对象。


    我从网上查找相关资料,找到了问题的原因:

      在StateServer或者SQLServer模式的时候保存在Session里面的对象必须支持序列化!如果是内置的类创建的对象,则必须是支持序列化的对象;如果是自己定义的类创建,则可以在定义该类的时候标识如下:

       [Serializable]   
           public      class      YourClass   
       {   
                //class      code
           }

      [Serializable] 标识该类创建的对象是可以序列化的。

      于是,在C#里你需要session存储的类定义前加上这个标识,问题解决!
    在asp.net(vb.net里 无法序列化的对象)
    的解决方法如下
    头部引用Runtime
    Imports System.Runtime.Serialization.Formatter
    在你需要序列化的类前面加上
    <Serializable()> _
    注意写法
    写的过程成不注意如果出现提示 :属性说明符不是一个完整的语句
    更正此错误的方法为:

    • 如果声明语句位于随后的行中,应在属性块后添加空格和下划线 (_) 与源代码行组合在一起。

    • 如果属性块没有相关联的声明语句,则应提供一个声明语句或移除属性块。

    • 如果属性要应用于整个程序集或当前程序集模块,则该属性块保留在单独的源代码行中。在尖括号 (< >) 内的属性名前面放置 Assembly:Module:,不要在属性块的后面添加空格或下划线。此外,确保此属性块位于源文件的开头。

    在vs2003+win2003+framework v1.1.4322 调试成功
  • 相关阅读:
    在C#中运用SQLDMO备份和恢复SQL Server数据库(转)
    c#中分割字符串的几种方法
    MS SQL Server中的日期格式化大全
    IBM基于双机热备份配置
    C#实现Des加密和解密
    ASP.NET备份恢复SqlServer数据库
    WEB 打印的相关技术分析
    通过身份证号码取得生日的一段代码(支持18位和15位身份证)
    C#的四种排序算法
    .net下读写配置文件app.config方法
  • 原文地址:https://www.cnblogs.com/skyapplezhao/p/1218499.html
Copyright © 2011-2022 走看看