温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ASP.NET中有哪些状态类型

发布时间:2021-08-10 17:55:48 来源:亿速云 阅读:135 作者:Leah 栏目:编程语言

本篇文章给大家分享的是有关ASP.NET中有哪些状态类型,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

我们可以在Global.asax的Application_Start函数中存储数据:

void Application_Start(object src, EventArgs e)  {  int exp = 0;  // population of dataset from ADO.NET query not shown  // Cache DataSet reference  Application["Experiment"] = exp;  }  现在你可以在任意页面下使用它:  private void Page_Load(object src, EventArgs e)  {  int expr = Int32.Parse((Application["Experiment"]));  }

于Application状态对于所有客户都是共享的,如果客户只是读取该数据,则没有什么问题,一旦要进行写操作,就不能保证线程的安全以及出现同步争用的问题。我们可以使用HttpApplicationStateLock类,它派生于ReadWriteObjectLock类,它提供了读/写锁的两种属性。在ASP.NET下,隐式地调用了AcquireWrite()和AcquireRead()方法以保证避免上面的问题。当然,我们也可以显示地使用Lock()和Unlock():

private void Page_Load(object sender, System.EventArgs e)  {  Application.Lock();  int expr = Int32.Parse((Application["Experiment"]));  if (expr>=something)  {  //do something   }  Else  {  //do something else   }  Application.UnLock();  //Some other thing goes here  }


session,cookie,view状态都是用来保存客户端信息的ASP.NET状态类型。它们之间又有什么区别呢?

Session状态是在客户登录的时候创建的,它保存了客户特定的信息,并以Session ID来标识。当一个新客户访问应用程序时,先生成一个新的Session ID(或是Session Key),并为同一个客户接下来的请求创建联系。你可以在Session State中存储任意类型的数据,作为你的应用,状态被同一个进程和AppDomain(App域)维护。Session State的特点是为每一个特定的客户创建状态以维护客户的信息,这些状态信息存储在服务器端的默认的会话状态配置中。

Session(“Value”) = expr ; // Storing the data into session object  SomeFunction()  {  int expr = Int32.Parse(Session(“Value”));//Accessing from it   if (expr>=something)  {  //do something   }  Else  {  //do something else   }  //Some other thing goes here  }

既然Session State针对特定的客户建立,通过它来识别客户的请求。ASP.NET提供了一种加密机制和编码算法生成自己的Session Key。这是非常必要的,因为知道了你的Session Key,就有权限访问指定的页面了。

在ASP.NET中生成Session Key的方法:

byte[] sessionkey = new byte[15];  //Generates a random number  RNGCryptoServiceProvider rngkey = new RNGCryptoServiceProvider ();  rngkey.GetBytes (sessionkey);  string clientsessionKey = SessionId.Encode (sessionkey);


但是Session和客户端的Cookie是有关的,当客户关掉Cookie时,Session就失效了。不过在ASP.NET中可以在web.config中修改设置,使Session的传递脱离Cookie。方法是:

<configuration> <system.web> <sessionState cookieless="true" /> </system.web> </configuration>

对于Cookie大家并不陌生,每个Cookie存储了多个名/值对,我们可以通过HttpCookie类的值集合来访问它,也可以间接地通过类所提供的索引器访问。Cookie在ASP.NET下的使用:

protected void Page_Load(Object sender, EventArgs E)  {  int expr = 0;  if (Request.Cookies["Expr"] == null)  {  // "Expr" cookie not set, set with this response    HttpCookie cokExpr = new HttpCookie("Expr");  cokExpr.Value = exprTextBox.Text;  Response.Cookies.Add(cokExpr);  expr = Convert.ToInt32(exprTextBox.Text);  }  else  {  // use existing cookie value...    expr = Convert.ToInt32(Request.Cookies["Expr"].Value);  }  // use expr to customize page  }

由于Cookie存储的信息是放到客户端的,用户在访问服务器端页面时,必然在客户端和服务器端之间频繁交换信息,影响了程序的性能。而Session由于存储在服务器内存中,因此不存在这个问题。不过,Session存储的信息是临时的,用户一旦关闭浏览器,状态即失去,而Cookie则相反。

以上就是ASP.NET中有哪些状态类型,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI