【问题标题】:Can multiple users share an HttpApplication instance?多个用户可以共享一个 HttpApplication 实例吗?
【发布时间】:2011-07-09 21:10:27
【问题描述】:

我使用了this article 顶部的表格作为参考。我有三个问题:

1 - 多个用户(来自不同的物理位置)可以共享一个HttpApplication 实例吗?如果是这样,默认情况下会发生这种情况吗?

2 - 多个用户(来自不同的物理位置)可以共享一个HttpApplicationState 实例吗?如果是这样,默认情况下会发生这种情况吗?

3 - 一个 ASP.NET 应用程序的多个用户可以共享一个单例实例或一个静态变量值吗?如果是这样,默认情况下会发生这种情况吗?

感谢您解决这个问题。

【问题讨论】:

    标签: asp.net lifecycle httpapplication httpapplicationstate


    【解决方案1】:

    你所有六个问题的答案都是肯定的。

    每个用户的状态应该存储在 Session 中。

    【讨论】:

    • 是的,我确定。 HttpApplication 处于全局状态。
    • 谢谢。事实证明我一直在做一些非常非常错误的事情,现在我明白为什么了。
    【解决方案2】:

    HttpApplication 包含每个 w3svc.exe 实例上的 Asp.Net 应用程序的状态。因此,应用程序中的每个 Web 服务器都会存储应用程序状态。如果您使用网络园艺,还有其他与 HttpApplication 对象有关的问题。

    同一服务器、同一线程上的所有用户将共享 HttpApplication、HttpApplicationState 和所有静态变量值。当多个 HttpApplication 实例在服务器上运行时,并发用户将不会访问这些对象的同一个实例。我不建议在这些对象中存储值...使用 Cache 对象存储您希望在服务器上的用户之间共享的值是一种更好的做法。

    Cache Object

    Cache 对象可以获取依赖项和过期时间值...这将允许您控制存储在服务器上的值的“新鲜度”。

    每个用户的值应该存储在 Session 对象中。

    Session Object

    【讨论】:

    • “同一服务器上的所有用户”是指访问同一服务器的所有用户吗?另外,我在哪里可以找到有关 w3svc.exe 的文档?
    • +1,谢谢您的回答。很有帮助,但我觉得 SLaks 最直接、最简洁地回答了实际问题。
    • np.. 只是想确保您在尝试在 Asp.Net 中的用户会话之间存储和访问变量时了解其他可用选项的上下文
    • @JeffFritz 在同一台服务器上池时是否保持 HttpApplication 状态?因为我读到 ASP.NET 实际上管理着一个 HttpApplication 对象池来服务请求。这里:msdn.microsoft.com/en-us/library/a0xez8f2%28v=vs.71%29.aspx
    • 是的@Ghasan,你关心的是IIS可以创建多个HttpApplications。它会根据需要创建尽可能多的并发请求来管理对服务器的请求,此数量可以在 1 - 100 的范围内。有关 HttpApplication 实例的更多信息可以在以下位置找到:support.microsoft.com/default.aspx?scid=kb;en-us;312607
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多