使用进程内会话状态模式时请考虑下面的限制:

来源:互联网 发布:淘宝发货流程 编辑:程序博客网 时间:2024/06/01 08:24

使用进程内会话状态模式时请考虑下面的限制: 
使用进程内会话状态模式时,如果 aspnet_wp.exe 或应用程序域重新启动,则会话状态数据将丢失。这些重新启动通常会在下面的情况中发生: 
在应用程序的 Web.config 文件的 <processModel> 元素中,设置一个导致新进程在条件被满足时启动的属性,例如 memoryLimit。 
修改 Global.asax 或 Web.config 文件。 
更改到 Web 应用程序的 \Bin 目录。 
用杀毒软件扫描并修改 Global.asax 文件、Web.config 文件或 Web 应用程序的 \Bin 目录下的文件。 
如果在应用程序的 Web.config 文件的 <processModel> 元素中启用了网络园模式,请不要使用进程内会话状态模式。否则将发生随机数据丢失。 
我把Access数据库放到\bin下面去了,导致Session老是失效搞得我焦头烂额,去仔细阅读了一下MSDN里的《会话状态》,才发现了这些:

.NET Framework 开发员指南

会话状态 [C#] 
请参见 
ASP.NET 状态管理

语言 
C#

Visual Basic

全部显示 
ASP.NET 提供 Web 应用程序需要的跨请求状态信息(购物车、数据滚动等)基础结构,并带有内置的会话状态功能,使您可以采取以下操作:

对从单个浏览器客户端到服务器上逻辑应用程序会话的请求进行自动识别和分类。 
将会话范围的数据存储在服务器上以供跨多个浏览器请求使用。 
引发适当的可在应用程序代码中处理的会话生存期管理事件(Session_OnStart、Session_OnEnd 等)。 
注意 Session_OnEnd 事件仅支持进程内会话状态模式。如果您使用状态服务器或 SQL Server 模式,则不会引发该事件。 
如果浏览器不在指定的超时时间内重新访问应用程序,则自动释放会话数据。 
本主题提供会话状态的概述,介绍如何标识和跟踪活动 ASP.NET 会话;解释会话状态存储和一般结构,并以一个高级代码示例作为总结。

会话状态概述 
HTTP 是一个无状态的协议,这意味着它不自动指示一个请求序列是否都来自相同的客户端,甚至不指示单个浏览器实例是否仍活跃地查看某个页或站点。因此,如果没有其他基础结构的帮助,要想生成需要维护某些跨请求状态信息的 Web 应用程序,如购物车、数据滚动等,就可能会非常困难。

ASP.NET 提供以下会话支持:

便于使用的会话状态功能,该功能是 ASP 开发人员所熟悉的,与其他 .NET Framework API 兼容。 
可靠的会话状态功能,可以经受得住 Internet 信息服务 (IIS) 重新启动和辅助进程重新启动而不丢失会话数据。 
可缩放的会话状态功能,该功能可用于网络场(多计算机)和网络园(多进程)两种情况,使管理员可以将更多的处理器分配给 Web 应用程序以提高它的可缩放性。 
用于不支持 HTTP Cookie 的浏览器的会话状态功能。 
对于核心会话状态方案,其吞吐量相当于(或高于)ASP 的吞吐量(当向购物车放入项时 50/50 读/写,修改访问的最后一页,验证信用卡详细信息等)。 
但是,会话状态不跨 Web 应用程序边界保持。如果执行期间一个 Web 应用程序切换到另一个应用程序,则会话信息不能用于新应用程序。

标识会话 
每个活动的 ASP.NET 会话都是使用 120 位的 SessionID 字符串进行标识和跟踪的,该字符串只包含 URL 中所允许使用的 ASCII 字符。SessionID 值是使用保证唯一性和随机性的算法生成的,其中保证唯一性的目的是确保会话不冲突,保证随机性的目的是确保怀有恶意的用户不能使用新的 SessionID 来计算现有会话的 SessionID。

根据配置应用程序设置的方式,通过 HTTP Cookie 或嵌套有 SessionID 字符串的修改的 URL 跨客户端-服务器请求与 SessionID 字符串进行通信。

会话状态存储 
ASP.NET 提供一个简单、易于使用的会话状态模型,您可以使用该模型跨多个 Web 请求存储任意数据和对象。它使用基于字典的、内存中的对象引用(这些对象引用存在于 IIS 进程中)缓存来完成该操作。使用进程内会话状态模式时请考虑下面的限制:

使用进程内会话状态模式时,如果 aspnet_wp.exe 或应用程序域重新启动,则会话状态数据将丢失。这些重新启动通常会在下面的情况中发生: 
在应用程序的 Web.config 文件的 <processModel> 元素中,设置一个导致新进程在条件被满足时启动的属性,例如 memoryLimit。 
修改 Global.asax 或 Web.config 文件。 
更改到 Web 应用程序的 \Bin 目录。 
用杀毒软件扫描并修改 Global.asax 文件、Web.config 文件或 Web 应用程序的 \Bin 目录下的文件。 
如果在应用程序的 Web.config 文件的 <processModel> 元素中启用了网络园模式,请不要使用进程内会话状态模式。否则将发生随机数据丢失。 

0 0