HttpApplicationState使用IIS

时间:2016-02-05 10:59:47

标签: c# asp.net iis httpapplicationstate

我已经完成了创建基于浏览器的POS应用程序的任务,该应用程序将在一台PC上使用Windows IIS服务器进行托管。其他几台PC和平板电脑在连接到同一网络时,通过在浏览器中输入托管它的PC的IP来访问应用程序的功能。应用程序将在ASP.NET中编程,使用C#作为ASPX页面背后的代码。
我的问题如下:如果我使用HttpApplicationState(var x = Application["testVariable"];)来存储变量,它们对于连接到站点的每个设备是本地的还是可以被所有设备访问并且可以被覆盖?

实施例
iPad连接并以用户A身份登录。我将变量Application["userName"]设置为字符串"Nathangrad"。然后,PC连接并以用户B身份登录。我将相同的变量设置为"OtherUser"。现在,如果我在iPad上并致电Application["userName"],我会获得"Nathangrad""OtherUser"吗?

2 个答案:

答案 0 :(得分:1)

MSDN for the HttpApplicationState课程的快速搜索显示以下内容:

  

“允许跨多个会话共享全局信息   ASP.NET应用程序中的请求。“

     

“客户端第一次从特定的ASP.NET应用程序虚拟目录中请求任何URL资源时,会创建一个HttpApplicationState类的实例。为Web服务器上的每个ASP.NET应用程序创建一个单独的实例。然后通过内部Application对象公开对每个实例的引用。“

答案 1 :(得分:1)

HttpApplicationState是全局性的,它可供应用程序的所有用户使用。来自MSDN:

  

支持在ASP.NET应用程序中跨多个会话和请求共享全局信息。

应用程序状态的典型用例是存储从未或很少更改并且根本不依赖于用户的内容。

如果您确实需要覆盖值,但仍希望它们在整个应用程序中全局可用,请考虑使用缓存System.Runtime.Caching.MemoryCache而不是应用程序状态。

要存储特定于用户的数据,您有两种选择:

  1. 会话。再次,来自MSDN:
  2.   

    ASP.NET会话状态在有限时间窗口内将来自同一浏览器的请求标识为会话,并提供了在该会话期间持久保存变量值的方法。

    请注意,在用户完成使用网站后不久,会话就会消失,而存储的内容将无法使用。

    1. 数据库持久性。如果您能够识别用户,则可以在数据库中存储必要的用户特定数据。此方法仅适用于经过身份验证的用户。