`
mmdev
  • 浏览: 12847009 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

ASP.NET存储状态的一个问题

阅读更多

通常,ASP.NET存储会话状态有三种方式——InProc、StateServer和SQLServer。一般最常用的是第一种,在这种情况下,可以用类似这样的语法来存储会话状态:Session["key"] = val。其中val可以使任何类型的对象。

但如果使用StateServer或SQLServer,则要求val的类型必须是一个可序列化类型,因为ASP.NET应用在于状态服务器之间交换数据时,需要对对象进行序列化。如果val不可序列化(有私有域/属性并且没有指定自定义序列化特性),则会在运行时出现如下异常:

“/”应用程序中的服务器错误。


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

解决方法有这样几种:

1 尽量使用基本类型的对象来存放数据

2 自定义类型只使用公有域/属性

3 为自定义类型实现序列化特性

……

几种方法优劣暂不作说明。我偷懒用了第一种。

分享到:
评论

相关推荐

    ASP.NET常见问题集锦.zip

    ASP.NET常见问题集锦.zip . .. .net中中文乱码问题解决.txt ADO.NET 与 XML:双剑合壁,威力强大.doc ASP.NET HTTP 运行时.doc ASP.NET ViewState 初探.doc ASP.NET Web 方法中的 XmlElement 参数的功能.d ...

    Web Service中保持ASP.net的状态

    有许多聪明的办法可以解决HTTP协议的...在ASP.net技术中提供了一个 非常有效的方案来保持状态,该方案隐藏了所有高难度的,具有挑战性的工作的细节,用户只需简单地使用 System.Web.SessionState.HttpSessionState类。

    asp.net知识库

    [ASP.NET 2.0]PageParser.GetCompiledPageInstance中存在一个Bug 如何在DotNet 2的登录组件中检索用户的锁定状态及解锁? ASP.NET 2.0, 想说爱你不容易 SqlDataSource WEB控件:当DeleteCommandType= 遭遇 ASP.NET ...

    ASP.NET应用开发案例教程

    8.3 ASP.NET应用程序中的用户状态管理 8.3.1 Global.asax文件概述 8.3.2 Application对象事件 8.3.3 Session对象事件 8.3.4 其他几种客户端的用户状态管理方法 8.3.5 本小节提示 8.4 ASP....

    ASP.NET应用与开发案例教程

    8.3ASP.NET应用程序中的用户状态管理 8.3.1Global.asax文件概述 8.3.2Application对象事件 8.3.3Session对象事件 8.3.4其他几种客户端的用户状态管理方法 8.3.5本小节提示 8.4ASP.NETHTFP运行情况 8.4.1HTYP运行‘晴...

    ASP.net入门教程

    ASP.NET 包括一个编译器,该编译器将包括页和控件在内的所有应用程序组件编译成一个程序集,之后 ASP.NET 宿主环境可以使用该程序集来处理用户请求。有关更多信息,请参见 ASP.NET 编译概述。 安全基础结构 除了 ...

    asp.net教学讲义

    第一章:asp.net和web窗体 6 1.1 NET应用开发架构简介 6 1.1.1. NET框架结构 6 1.1.2 http协议简介 6 1.1.3 静态网页与动态网页 8 1.1.4 客户端代码与服务器端代码 8 1.1.5 ASP.NET简介 8 1.2 Web 窗体与ASP.NET页面...

    ASP.NET 控件的使用

    第一部分 构建ASP.NET页面 第1章 ASP.NET Framework概览 2 1.1 ASP.NET和.NET Framework 5 1.1.1 框架类库 5 1.1.2 公共语言运行库 9 1.2 ASP.NET控件 10 1.2.1 ASP.NET控件概览 11 1.2.2 HTML控件 12 1.2.3 理解...

    ASP.NET教学讲义,完整章节

    第一章:asp.net和web窗体 4 1.1 NET应用开发架构简介 4 1.2 Web 窗体与ASP.NET页面 7 1.3 ASP.NET 页的结构 11 1.4 Page事件(页面事件) 16 1.2.2 处理回送 20 1.2.3 ASP.NET应用程序示例 23 第二章:WEB服务器...

    asp.net技术内幕(1)

    behind 6.3.1 code-behind是如何工作的 6.3.2 编译code-behind文件 6.3.3 从一个code-behind文件派生多个页面 6.3.4 编译完整的ASP.NET页面 6.4 小结 <br>第7章 用可移动控件为可移动设备...

    ASP.NET的网页代码模型及生命周期

    在创建了ASP.NET应用程序后,系统同样会默认创建一个Default.aspx页面,不同的是,多出了一个Default.aspx.designer.cs,用来初始化页面控件,一般不需要修改。 4.1.5 ASP.NET网站和ASP.NET应用程序的区别 在ASP.NET...

    ASP.NET.4揭秘

    第一部分 构建asp.net页面 第1章 asp.net framework概览2 1.1 asp.net和.net framework5 1.1.1 框架类库5 1.1.2 公共语言运行库10 1.2 asp.net控件11 1.2.1 asp.net控件概览11 1.2.2 html控件12 1.2.3 理解和处理...

    asp.net专家疑难解答200问

    如何在ASP.NET中做一个日期选择器 198.如何在弹出对话框的同时保持页面的显示 199.如何点击按钮弹出新页面,输入数据后返回并且不刷新页面 第11章 文件操作 200.如何读取、修改文本文件 201....

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    6.1 ASP.NET状态管理 6.2 视图状态 6.2.1 视图状态示例 6.2.2 在视图状态中保存对象 6.2.3 视图状态评估 6.2.4 有选择地禁用视图状态 6.2.5 视图状态安全 6.3 在页面间传送信息 6.3.1 查询字符串 ...

    ASP.NET4高级程序设计(第4版) 3/3

    6.1 ASP.NET状态管理 177 6.2 视图状态 179 6.2.1 视图状态示例 180 6.2.2 在视图状态中保存对象 181 6.2.3 视图状态评估 183 6.2.4 有选择地禁用视图状态 184 6.2.5 视图状态安全 185 6.3 在页面间...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    5.18.1 从Calendar控件中选择一个日期 149 5.18.2 从日历中选择要输出的日期格式 150 5.18.3 选择日期、星期或月份 150 5.18.4 使用日期范围 151 5.18.5 修改日历的样式和操作方式 153 5.19 AdRotator服务器...

    ASP.NET3.5从入门到精通

    4.4 ASP.NET 客户端状态 4.4.1 视图状态 4.4.2 控件状态 4.4.3 隐藏域 4.4.4 Cookie 4.4.5 客户端状态维护 10 第一篇 窗口与界面编程 4.5 ASP.NET 页面生命周期 4.6 ASP.NET 生命周期中的事件 4.6.1 页面加载事件...

    ASP.NET 3.5 开发大全

    4.4 ASP.NET客户端状态 4.4.1 视图状态 4.4.2 控件状态 4.4.3 隐藏域 4.4.4 Cookie 4.4.5 客户端状态维护 4.5 ASP.NET页面生命周期 4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    1.5 运行一个简单的控件 7 1.5.1 开发一个简单控件 7 1.5.2 部署和运行 11 1.6 控件生命周期 12 1.6.1 概述 12 1.6.2 用代码跟踪控件生命周期过程 14 1.7 本章总结 17 第2章 服务器控件开发中的调试技术 18 ...

Global site tag (gtag.js) - Google Analytics