通常,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提供了会话状态功能,使得开发者可以存储和检索用户在不同页面间导航时的数据。 会话状态的实现基于会话ID,这是一个唯一标识符,通过HTTP响应返回给客户端(通常是浏览器),然后在后续...
本项目是一个使用ASP.NET技术实现的在线计算器,对于想要学习ASP.NET的初学者来说,这是一个很好的实践案例。 在ASP.NET中,我们可以使用C#或VB.NET作为后端编程语言,通过编写服务器端代码来处理用户请求和生成...
ASP.NET使用一个特定的Session ID作为Cookie值,以此标识用户的Session实例。 第二种机制是不依赖Cookie的状态保持方式,适用于不支持或禁用Cookie的浏览器。在这种情况下,ASP.NET会将Session ID插入到URL中,...
这个实例源码可能是为了展示如何使用ASP.NET来开发一个在线考试系统,名为"MyOnLineExam"。 在ASP.NET中,Web应用程序通常由一系列的.aspx页面组成,这些页面包含了HTML、服务器控件和后台代码。服务器控件如...
状态管理是ASP.NET中的另一个核心概念,它包括ViewState、Session、Cookie、Application和Cache等机制,用来在页面间或用户会话期间保持数据。ViewState用于在页面往返中保留控件的状态,Session用于跨页面跟踪用户...
1. **ASP.NET基础**:ASP.NET是微软开发的一个用于构建Web应用程序的框架,它提供了丰富的服务器控件、自动状态管理以及强大的数据绑定能力,简化了Web应用的开发流程。 2. **C#或VB.NET编程**:这两种语言都是.NET...
在ASP应用程序迁移到ASP.NET时,会话状态管理的兼容性是一个关键问题。开发者可以采取以下策略: 1. **直接迁移**:如果会话数据量不大,可以直接使用ASP.NET的In-Process模式,大部分代码无需修改。 2. **会话ID...
在这个ASP.NET 4.0 完整项目(10个)的压缩包中,你将找到一系列基于ASP.NET 4.0和C#的实践项目,这些项目可以帮助你深入理解和掌握ASP.NET的核心概念和技术。 1. **ASP.NET基础**:在这些项目中,你可以看到ASP...
ASP.NET状态保存方法是开发ASP.NET应用程序时保持用户交互数据的关键技术。状态管理涉及在页面之间或请求之间保存用户信息,以便在应用的生命周期内保持数据的连续性。以下是ASP.NET中常用的状态保存方法的详细解释...
在这个“ASP.NET实现简易计算器”的项目中,我们主要关注的是如何利用C#语言在ASP.NET的Web表单(WebForm)环境中创建一个基本的计算器应用。下面将详细阐述相关知识点。 1. ASP.NET Web Forms: ASP.NET Web ...
ASP.NET常见问题集锦.zip . .. .net中中文乱码问题解决.txt ADO.NET 与 XML:双剑合壁,威力强大.doc ASP.NET HTTP 运行时.doc ASP.NET ViewState 初探.doc ASP.NET Web 方法中的 XmlElement 参数的功能.d ...
综上所述,这个ASP.NET评分星星Demo涵盖了前端交互、后端处理、数据库交互以及用户体验优化等多个方面,是学习和实践ASP.NET开发的一个很好的实例。通过这个Demo,开发者可以深入理解如何在实际项目中整合多种技术,...
5. **页面生命周期**:在ASP.NET Web Forms中,每个页面都有一个生命周期,包括初始化、加载、回发和卸载等阶段。开发者需要理解这些阶段,以确保在正确的时间执行代码。 6. **状态管理**:由于HTTP协议无状态,ASP...
Asp.Net是一个强大的Web应用程序开发框架,由微软公司推出,用于构建动态网站、Web应用程序和服务。在Asp.Net中开发审批流程,可以帮助企业或组织实现高效、规范的业务审批过程,提升工作效率。在这个审批流程中,...
7. **实时通信**:为实现即时消息传递,可能使用SignalR库,这是一个用于简化实时Web应用程序开发的ASP.NET库。它支持WebSocket、Forever Frame、Server-Sent Events和Long Polling等多种实时通信技术。 8. **CSS和...
3. **服务器端处理**:在服务器端,我们创建一个ASP.NET Web服务(.asmx)或使用MVC控制器来处理注册请求。这里可以执行数据库操作,比如检查用户名是否已存在,以及加密存储密码等。 4. **数据验证**:服务器端对...
ASP.NET不仅仅是一个编程模型,它还包含了丰富的控件、服务端事件处理、状态管理以及内置的安全特性,使得开发动态网站变得更加简单。 【ASP.NET Web Forms】 在本项目中,"asp.net写的一个小博客"很可能使用了ASP...
在提供的压缩包文件"Example011-使用任务栏的状态区"中,可能包含了一个完整的示例项目,包括ASP.NET页面、C#后台代码以及相关的CSS和JavaScript文件。通过查看和分析这些文件,你可以学习到如何在实际项目中实现...
1. **ASP.NET Web Forms**:这是一个用于创建交互式Web页面的模型,通过控件和事件处理程序提供直观的开发体验。在这个项目中,可能使用了诸如TextBox、Button、GridView等控件来展示和操作数据。 2. **ADO.NET**:...
【ASP.NET校园音乐吧】项目是一个基于ASP.NET技术构建的Web应用程序,主要针对大学生群体,提供了丰富的音乐资源和互动功能。这个项目不仅适用于学习ASP.NET技术的学生,也适合那些想要了解如何开发Web应用的初学者...