.net - 引用自 MSDN 关于 System.Web.HttpApplication

标签 .net asp.net httpapplication

引自 http://msdn.microsoft.com/en-us/library/4wt3wttw.aspx :

One instance of the HttpApplication class is used to process many requests in its lifetime. However, it can process only one request at a time. Thus, member variables can be used to store per-request data.

为什么按请求?也许每组请求?似乎成员变量可用于在 HttpApplication 的整个生命周期中存储数据。因此,第二个(对于此 HttpApplication)请求开始时 HttpApplication 的状态等于第一个(对于此 HttpApplication)请求结束时的状态。

为什么按请求?

最佳答案

它声明 HttpApplication 对象的成员可用于存储每个请求的数据。这并不意味着成员仅限于每个请求的数据。 HttpApplication.Application成员持有对整个应用来说是全局的成员,但是在处理请求的过程中,具体的HttpApplication实例只能用当前正在处理的请求中的信息修改ApplicationState对象中保存的全局信息。如果 HttpApplication 对象可以同时访问多个请求,可以想象它能够使用聚合修改全局数据或从任何请求中选择数据。正如@Sidharth Panwar 所提到的,这会产生并发问题,并且允许处理多个请求也将是一场噩梦,因为需要保证它们来自同一用户(出于安全/内存原因),而这不能得到保证,因为每当发出新请求时,IIS 都会对下一个可用的 HttpApplication 对象进行排队。这将导致单个实例可能处理大量负载(并因此成为瓶颈)。

关于.net - 引用自 MSDN 关于 System.Web.HttpApplication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3686614/

相关文章:

c# - 申请许可证

c# - 限制 Active Directory 计算机组访问 .Net 网站

c# - 对 HttpApplication 进行单元测试

android - 如何修复 Module 依赖于一个或多个 Android Libraries 但在构建 Cordova App 时是一个 Jar

c# - 找不到 Restful Web 服务端点

c# - 如何在 .NET 中将源自类型 A 的对象转换为类型 B?

.net - 什么是 System.Reflection.Module?

asp.net - 应用程序_启动 ASP.NET

javascript - 禁用输入类型为 =“time” 的 webkit 输入掩码?

c# - 在 .NET C# 中使用 iText 7 和 GlobalSign DSS 签署文档