ASP.NET - 应用程序状态概述

29、ASP.NET中的HttpApplication类与HTTP模块详解 本文详细介绍了ASP.NET中的HttpApplication类和HTTP模块的核心概念与应用。内容涵盖HttpApplication的作用及其重写方法、应用程序状态的管理、全局事件的处理机制、HTTP模块的创建与使用,以及模块与应用程序状态的协同工作方式。此外,还讨论了性能优化策略、错误处理机制及两者在不同应用场景下的选择与实践。通过实例演示,帮助开发者更好地理解如何利用HttpApplication和HTTP模块构建高效、可扩展的ASP.NET应用程序。 阅读详情

 

      应用程序状态是可供 ASP.NET 应用程序中的所有类使用的数据储存库。它存储在服务器的内存中,因此与在数据库中存储和检索信息相比,它的执行速度更快。与特定于单个用户会话的会话状态不同,应用程序状态应用于所有的用户和会话。因此,应用程序状态用于存储那些数量较少、不随用户的变化而变化的常用数据。

 

1、使用应用程序状态

应用程序状态存储在 HttpApplicationState 类的实例中。此类公开对象的键值字典。

在用户初次访问应用程序中的任何 URL 资源时,将会创建 HttpApplicationState 实例。HttpApplicationState 类通常通过 HttpContext 类的 Application 属性访问。

可以通过两种方式使用应用程序状态。可以通过代码直接对 Contents 集合中的值进行添加、访问或移除操作。在应用程序运行时,可以随时访问 HttpApplicationState 类。但该类通常用于在应用程序启动时加载应用程序状态数据。为此,可向 Global.asax 文件中的 Application_Start 方法中添加加载应用程序状态的代码。

此外,还可以在 Web 应用程序的 Global.asax 文件中通过 <object runat="server"> 声明向 StaticObjects 集合添加对象。随后,就可以在应用程序中的任何地方通过代码对用这种方法定义的应用程序状态进行访问。下面的示例演示了应用程序状态值的对象声明:

<object runat="server" scope="application" ID="MyInfo"

    PROGID="MSWC.MYINFO">

</object>

      只能在 Global.asax 文件中向 StaticObjects 集合添加对象。如果试图直接通过代码添加对象,该集合将引发 NotSupportedException。

不必引用 Application 集合,就可以访问应用程序状态中存储的对象成员。下面的代码示例演示了如何引用在应用程序状态的 StaticObjects 集合中定义的对象成员:

protected void Page_Load(Object sender, EventArgs e)

    Label1.Text = MyInfo.Title;

End Sub

 

2、应用程序状态注意事项

使用应用程序状态时,必须注意以下重要事项:

·资源   由于应用程序状态存储在内存中,因此比将数据保存到磁盘或数据库中速度更快。但是,在应用程序状态中存储较大的数据块可能会耗尽服务器内存,这会导致服务器将内存分页到磁盘。除了使用应用程序状态之外,还可以使用 ASP.NET 缓存机制来存储大量的应用程序数据。ASP.NET 缓存也是将数据存储在内存中,因此速度很快;但是,ASP.NET 会对缓存进行主动管理,如果内存不足时将移除项。

·易失性   由于应用程序状态存储在服务器内存中,因此每当停止或重新启动应用程序时应用程序状态都将丢失。例如,如果更改了 Web.config 文件,则要重新启动应用程序,此时除非将应用程序状态值写入非易失性存储媒体(如数据库)中,否则所有应用程序状态都将丢失。

·可伸缩性   应用程序状态不能在为同一应用程序服务的多个服务器间(如在网络场中)共享,也不能在同一服务器上为同一应用程序服务的多个辅助进程间(如在网络园中)共享。因此,应用程序不能依靠应用程序状态来实现在不同的服务器或进程间包含相同的应用程序状态数据。如果应用程序要在多处理器或多服务器环境中运行,可以考虑对必须在应用程序中准确保存的数据使用伸缩性更强的选项(如数据库)。

·并发   应用程序状态采用自由线程模式,即应用程序状态数据可由多个线程同时访问。因此,必须确保通过包含内置同步支持,以线程安全的方式进行应用程序状态数据更新。可以使用 Lock 和 UnLock 方法来确保数据的完整性,方法是锁定数据,使其一次只能由一个源进行写操作。还可以初始化 Global.asax 文件中 Application_Start 方法中的应用程序状态值,降低出现并发问题的可能性。

【ASP.NET】第三课——ASP.NET 系统对象与状态管理 知识点:理解ASP.NET系统对象的概念、掌握ASP.NET状态管理技术、掌握Page对象的IsPostBack属性和ClientScript属性、掌握Response、Request、Server、Cookie、Session、Application对象的使用方法、理解状态管理技术之间的区别。 在【ASP.NET】第二课——ASP.NET WebForm中的控件,我们已经认识了 ASP.NET 的控件,重点讲解了常用的 Web 服务器控件。 本次课将学习 ASP.... 阅读详情

相关推荐

第6章 ASP.NET应用程序状态管理

第6章 ASP.NET应用程序状态管理

ASP.NET应用程序管理状态

问题引出:Http协议是无状态的,也就是说当客户端一次请求完成后,下一次再发出请求时,服务器是无法记忆的。在ASP.NET中,客户端每次发出一个请求,服务器都会为之新建一个页面实例,这也就意味着先前的数据都要丢失。 实际上通常需要服务器能维护客户端的状态。ASP.NET提供了几种技术来实现这个功能,如ViewState 控件状态 隐藏域 查询字符串 cookies session 应用程序状态

skyandcode的专栏 1325

别再只会按按钮了!用NanoStat开源项目学ESP32硬件设计:BOOT与自动下载电路的避坑指南

本文通过NanoStat开源项目深入解析ESP32硬件设计中BOOT与自动下载电路的关键技术。从启动机制、电路设计陷阱到三极管选型,提供了一套完整的避坑指南和优化方案,帮助开发者提升设计可靠性和烧录效率。特别适合中级开发者学习ESP32硬件设计的精髓。

weixin_30296405的博客 439

告别迷茫!ESP-IDF开发环境搭建(Win10+VSCode)保姆级避坑指南

本文提供了一份详细的ESP-IDF开发环境搭建指南,特别针对Windows 10系统和VSCode编辑器。从Python版本选择、Git配置到常见编译错误的解决方案,涵盖了新手在搭建过程中可能遇到的所有关键问题。通过本指南,开发者可以快速完成ESP-IDF环境配置,避免常见的陷阱和错误,提高开发效率。

weixin_30466039的博客 420

化工设计软件:PDMS二次开发_(7).数据导入与导出技术

在某些复杂场景下,PDMS提供的标准API接口可能无法满足需求。此时,可以通过自定义API接口来实现特定的数据导入与导出功能。自定义设备导入API接口可以处理更复杂的设备数据格式。# 导入必要的库import pdms_api # 假设有一个PDMS API库# 定义自定义设备数据# 自定义设备导入API接口# 调用自定义设备导入API接口# 输出导入成功的消息print("自定义设备数据导入成功")在PDMS二次开发中,数据的导入与导出是关键的技术环节。

kkchenjj的博客 1485

情感分析在金融领域的应用:舆情影响股价预测

我们都知道,股价的波动受到多种因素的影响,而大众的情绪和看法就是其中很重要的一部分。我们在日常生活中都有根据别人的评价来判断事物好坏的经验,在金融市场里,舆情就像是大众对某家公司的集体评价,它能反映出市场参与者的情绪和预期。学习这方面的知识,能帮助投资者更好地把握市场动态,做出更明智的投资决策,无论是个人投资者还是金融机构的分析师,都能从中受益。有一天,你看到某家知名企业被曝光了严重的产品质量问题,新闻铺天盖地,股民们也都在热议纷纷,负面情绪弥漫。这时,你会不会觉得这家公司的股价可能要下跌了呢?

AI 原生应用开发的博客 1147

ASP.NET 生命周期概述

ASP.NET 应用程序生命周期概述 ASP.NET 页生命周期概述 IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述 转载于:https://www.cnblogs.com/starspace/archive/2008/10/17/1313806.html...

weixin_30781775的博客 65

车载以太网-组播

车载以太网-组播

天赐好车的博客 253

读取应用程序状态中的值

(如果只是想使用应用程序状态的值,问题是很简单的.我个人坚持对待一个问题不能只在表面上打转,要深入进去把问题搞明白。所以就记录这点东西)先介绍两个概念:网络场:所谓的网络场是指应用程序由多台服务器承载的情况。网络园:是指应用程序被同一台服务器上的多个进程承载的情况。应用程序状态概述ASP.NET 应用程序是具有以下特征的所有文件、页、处理程序、模块和代码的总和:它们都驻留在给定虚拟目录及其子目录中...

weixin_33691700的博客 127

图像处理入门007:图像处理中的数学基础:线性代数与卷积

一种:把 OpenCV 当黑盒,调用,效果不对就乱调参数;另一种:理解每个像素是怎么被周围邻域"加权平均"的,理解核翻转、边界填充、stride 的含义。前者能干活,后者能解难题。一旦遇到自定义核(比如 ISP 上的锐化)、深度学习反向传播、医学图像重建,你就必须把卷积、相关、矩阵乘法这些基本功捡回来。线性代数三件套:向量点积、矩阵乘法、线性变换;2D 卷积的数学定义:核翻转、滑动窗口、边界填充。并手写一个,验证它与和的结果完全一致(误差 < 1e-9)。f∗gn∑m−∞∞f。

专注:太空算力、AI infra、异构调度、大模型成本工程 387

车载软件刷写工具vFlash --- 自动化接口(Automation API)应用简介

车载软件刷写工具vFlash --- 自动化接口(Automation API)应用简介

Soly_kun的博客 361

ASP.NET 笔记(一)、概述

一、概述 ASP.NET 提供了完整的服务器端对象模型,可以在运行期间使用。ASP.NET 可以在其环境中把页面上的所有控件作为对象来访问。在页面上使用控件功能,生成 HTML 内容的 ASP.NET 通常称为 Web 窗体。 基本上,Web 窗体上控件的状态信息(包括在文本框中输入的信息、下拉列表中的选项等)存储在隐藏的 viewstate 字段中,这个字段是...

weixin_34015566的博客 100

【小白深度教程 1.8】手把手教你使用 Depth Anything V2 估计单目深度,并映射到 3D 点云(含 Python 代码)

我们尝试使用单目深度估计技术(Depth Anything V2),来进行准确的双目深度估计,并将场景转换成 3D 点云,Python 代码在最后。

2401_87064292的博客 5090

ASP.NET 生命周期

ASP.NET 生命周期:MSDN:ASP.NET 应用程序生命周期概述 概述应用程序生命周期,列出重要的生命周期事件,并描述如何编写适合应用程序生命周期的代码。在 ASP.NET 中,若要对 ASP.NET 应用程序进行初始化并使它处理请求,必须执行一些处理步骤。此外,ASP.NET 只是对浏览器发出的请求进行处理的 Web 服务器结构的一部分。了解应用程序生命周期非常重要,这样才能在适当的生命

海峰的专栏 696

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

基础知识(asp.net)<1>

1、asp.net session state mode有几种? Session State mode 一共有5中模式,分别为InProc,StateServer,SQLServer,Custom,Off。下面分别说明5种模式: InProc mode:会话状态保存在ASP.NET 辅助进程中,此模式为默认模式。并且只有在此模式下才会在Session Timeout触发Ses...

weixin_30550271的博客 96

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

《Programming ASP.NET》(中文版)笔记三——第六章:网站基础

页面:当浏览器请求Web服务器中的.aspx文件时,服务器将处理该页面。如果是Web应用启动后第一次访问此页面,那么ASP.NET运行时将编译此页的Page类。该类由System.Web.UI.Page派生。经过编译的类中包括所有控件的声明和此页面的组成代码,例如,属性、事件处理程序和其他方法。代码隐藏:.aspx.cs 文件 转到另一个页面:实现这一功能,共有四种不同方法:超链接、服

j544759698的专栏 400

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ASP.NET 状态管理概述

ASP.NET  ASP.NET 状态管理概述   每次将网页发送到服务器时,都会创建网页类的一个新实例。在传统的 Web 编程中,这通常意味着在每一次往返行程中,与该页及该页上的控件相关联的所有信息都会丢失。例如,如果用户将信息输入到文本框,该信息将在从浏览器或客户端设备到服务器的往返行程中丢失。为了解决传统的 Web 编程的固有限制,ASP.NET 包括了几个选项,

bestshl的专栏 1172

ASP.NET - 视图状态概述

       视图状态是 ASP.NET 页框架用于在往返过程之间保留页和控件值的方法。在呈现页的 HTML 标记时,必须在回发过程中保留的页和值的当前状态将被序列化为 Base64 编码字符串。然后,此信息将被放入一个或多个视图状态隐藏字段。 1、方案 视图状态由 ASP.NET 页框架自动用于保存在各个回发之间必须保留的信息。此信息包括控件的任何非默认值。您还可以使用视

dodream的专栏 1942

ASP.NET概述

ASP.NET 不仅仅是 Active Server Page (ASP) 的下一个版本;它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 Web 应用程序所需的各种服务。ASP.NET 的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有 ASP 应用程序中逐渐添加 ASP.NET 功能

skyofking 4971

ASP.NET 2.0 状态管理概述

ASP.NET 状态管理 Web 本质上是无状态的;对页面的每个请求都将被视为新请求,而且默认情况下,来自一个请求的信息对下一个请求不可用。为了帮助克服此基于 Web 的应用程序的固有限制,ASP.NET 包含许多用于管理状态(即用于存储请求之间的信息)的功能。您可以使用状态管理跟踪任何影响应用程序行为的信息或数据:目录、购物车、用户选项、检查列表和命中计数器都是示例。...

aobc72208的博客 223

请确保 ASP.NET State Service (ASP.NET 状态服务)已启动解决办法

请确保 ASP.NET State Service (ASP.NET 状态服务)已启动解决办法   2007-09-24 14:09:40|  分类: ASP.net(C#) |  标签: |字号大中小 订阅 异常详细信息: System.Web.HttpException: 无法向会话状态服务器发出会话状态请求。请确保已启动 ASP.NET State service

zhdd1234的专栏 2万+

ASP.NET 状态管理

ASP.NET 状态管理 应用程序状态包括任何影响应用程序行为的信息或数据:目录、购物车、用户选项、检查列表和命中计数器都是应用程序状态的示例。对于要生成基于状态的解决方案的应用程序开发人员来说,可采用的用法模式、数据类型和访问方法多种多样,所以状态管理会比较复杂。 ASP.NET 提供便于使用的应用程序状态和会话状态管理功能,这些功能是 ASP 开发人员所熟悉的,可以容...

aobc72208的博客 360

18、深入解析ASP.NET Web应用程序开发

本文深入解析了ASP.NET Web应用程序开发的各个方面,包括环境配置、静态与动态页面、IIS设置、Visual Studio开发流程、表单设计器使用、状态管理、事件处理、数据绑定、用户认证与授权,以及错误处理和调试技巧等内容。通过详细的步骤和示例代码,帮助开发者更好地理解和掌握ASP.NET开发技术。

weixin_35294091的博客 1091

ASP.NET Core 应用程序状态

  在ASP.NET Core中,由多种途径可以对应用程序状态进行管理,使用哪种途径,由检索状态的时机和方式决定。  应用程序状态指的是用于描述当前状况的任意数据。包括全...

dotNET跨平台 329

ASP.NET的四种状态

    这些状态的原理对于做.NET开发非常重要。现在详细解说一下。    视图状态:视图状态就在大家身边不知道大家是否注意。ASP.NET是基于服务其处理事件的。当服务器处理完事件时,再返回本窗体时,如果没有视图状态,原来的数据将不会在有。这样说也许会晕。举个列子,比如有一个网站需要你注册成为会员。当你填完信息,(一般来说页面会转向别的地方)这里为了说明问题,我们让他返回原来的页面继续操作,

Taskcnjia的专栏 443
上一篇: ASP.NET - 视图状态概述
下一篇: ASP.NET - 配置文件属性概述
dodream
博客等级 码龄21年 93粉丝 247原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值