ASP.NET内置对象
2012-08-06 20:24
531 查看
简述ASP.NET内置对象。
ASP.NET提供了内置对象有Page、Request、Response、Application、Session、Server、Mail、Cookies、Cache、Trace 等等。
一..Page对象
Page对象是由System.Web.UI命名空间中的Page类来实现的,Page 类与扩展名为.aspx 的文件相关联,这些文件在运行时被编译为Page对象,并缓存在服务器内存中。Page对象提供的常用属性、方法及事件如下所示:
名 称 功 能 说 明
IsPostBack属性 获取一个值,该值表示该页是否正为响应客户端回发而加载
IsValid属性 获取一个值,该值表示页面是否通过验证
Application属性 为当前 Web 请求获取 Application 对象。
Request属性 获取请求的页的 HttpRequest 对象
Response属性 获取与 Page 关联的 HttpResponse 对象。该对象使您得以将 HTTP 响应数据发送到客户端,并包含有关该响应的信息。
Session属性 获取 ASP.NET 提供的当前 Session 对象。
Server属性 获取 Server 对象,它是HttpServerUtility 类的实例。
DataBind方法 将数据源绑定到被调用的服务器控件及其所有子控件
RegisterClientScriptBlock方法 向页面发出客户端脚本块
Init事件 当服务器控件初始化时发生
Load事件 当服务器控件加载到Page对象中时发生
Unload事件 当服务器控件从内存中卸载时发生
1.IsPostBack属性
IsPostBack属性用来获取一个布尔值,如果该值为true,则表示当前页是为响应客户端回发(例如单击按钮)而加载,否则表示当前页是首次加载和访问。
private void Page_Load(object sender, System.EventArgs e)
{
if( !Page.IsPostBack )
{
Label1.Text = "页面第一次加载!";
}
else
{
Label1.Text = "页面第二次或第二次以上加载!";
}
}
IsValid属性
IsValid属性用来获取一个布尔值,该值指示页验证是否成功,如果页验证成功,则为 true;否则为 false。一般在包含有验证服务器控件的页面中使用,只有在所有验证服务器控件都验证成功时,IsValid属性的值才为true。
private void Button_Click(Object Sender, EventArgs e)
{
if (Page.IsValid == true) //也可写成if (Page.IsValid)
{
mylabel.Text="您输入的信息通过验证!";
}
else
{
mylabel.Text="您的输入有误,请检查后重新输入!";
}
}
二..Request对象
Request
1.Request封装了客户端请求信息。Request的常见属性如下:(IsAuthenticated, Item,Params )等没添加进去作声明
2.常用属性的二级属性:
① Browser的二级属性
示例:
ListBox1.Items.Add(Request.Browser.Beta.ToString());
//获取客户端浏览器是否是Beta版,转换为字符串后添加到列表框中
ListBox1.Items.Add(Request.Browser.ClrVersion.ToString());
//获取安装在客户端的.NET Frame版本,转换为字符串后添加到列表框中
② UrlReferrer的二级属性
示例:
ListBox1.Items.Add(Request.UrlReferrer.Port.ToString());
//获取客户端发出客户端请求的端口号,转换为字符串后添加到列表框中
ListBox1.Items.Add(Request.UrlReferrer.Host.ToString());
//获取发出客户端请求的主机名,转换为字符串后添加到列表框中
3.Request对象的AcceptType属性的主要功能是获取客户端所支持的MIME类型
AcceptType属性返回一个字符串数组,其数组的下标下限是0,上限可通过Request对象的AcceptTypes.GetUpperBound(0)属性获得,通过循环可将数组中的值逐一输出;
MIME(Multipurpose Internet Mail Extensions)是一个有关信息格式的协议:text/plain 、image/jpeg 、text/xml 、 text/javascript......
eg:
1994&Name=sun,当选定【HTTP查询字符串】选项时,列表框中显示的值如图3-3所示。地址中“?”后面的部分,即“ID=1994&Name=sun”,被视为整个页面执行时的参数。本例中有2个,当有多个参数时,各参数间需要用“&”符号连接。(具体看上面代码)
三..Response对象
Response常用属性如下:
Response常用方法
示例:
Response.Write("新年快乐"); //将“新年快乐”输出到网页上
Response.WriteFile("f:\\sun.txt"); //将f盘根目录下的sun.txt文件中的内容输出到网页上
Response.Redirect("login.htm"); //将页面跳转到本站点中的login.htm页面上
Response.Redirect("http://www.sina.com.cn"); //将页面跳转到www.sina.com.cn页面上
Response.Close() //断开页面和服务器端的连接
四..Server对象
HtmlEncode(HtmlDecode)/ UrlEncode(UrlDecode) 等的区别我已经在别的文章说明, 或者自行查阅文档
五..Session对象
Session.Add("变量名",变量值);
在具体应用中,可以这样使用:
int userId = 1;
string userName = "test";
string userPwd = "sdgtrertkl";
Session.Add("userId",userId);
Session.Add("userName", userName);
Session.Add("userPwd", userPwd);
在上面例子中创建了userId,userName,userPwd三个Session来存储用户的登录信息。程序随时都可以通过这三个Session对象来查看用户的连接状态,这是实际的项目中最常见的Session应用。
需要注意的是,也可以不使用Add方法来设置Session对象,语法如下:
Session["变量名"]=变量值;
这样,上面的例子就可以改为:
Session["userId"] = userId;
Session["userName"] = userName;
Session["userPwd"] = userPwd;
Session即会话,是指一个用户在一段时间内对某一个站点的一次访问。
Session对象在.NET中对应HttpSessionState类,表示“会话状态”,可以保存与当前用户会话相关的信息。
Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息。用户在应用程序的页面切换时,Session对象的变量不会被清除。
对于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的;而不同用户会话访问到的Session对象的内容则各不相同。 Session可以保存变量,该变量只能供一个用户使用,也就是说,每一个网页浏览者都有自己的Session对象变量,即Session对象具有唯一性。
(1)将新的项添加到会话状态中
语法格式为:
Session ("键名") = 值
或者
Session.Add( "键名" , 值)
(2)按名称获取会话状态中的值
语法格式为:
变量 = Session ("键名")
或者
变量 = Session.Item("键名")
(3)删除会话状态集合中的项
语法格式为:
Session.Remove("键名")
(4)清除会话状态中的所有值
语法格式为:
Session.RemoveAll()
或者
Session.Clear()
(5)取消当前会话
语法格式为:
Session.Abandon()
(6)设置会话状态的超时期限,以分钟为单位。
语法格式为:
Session.TimeOut = 数值
Global.asax 文件中有2个事件应用于Session对象
事件名称 说明
Session_Start 在会话启动时激发
Session_End 在会话结束时激发
eg:
string userName;
if(Session["UserName"]!=null)
{
//当指定名称的Session存在时,获取指定Session的值
userName=(string)Session["UserName"];
}
六..Cookie对象
Cookie跟Session、Application类似,也是用来保存相关信息,但Cookie和其他对象的最大不同是,Cookie将信息保存在客户端,而Session和Application是保存在服务器端。也就是说,无论何时用户连接到服务器,Web站点都可以访问cookie信息。这样,既方便用户的使用,也方便了网站对用户的管理。
ASP.NET包含两个内部Cookie集合。通过HttpRequest的Cookies集合访问的集合包含通过Cookie标头从客户端传送到服务器的Cookie。通过HttpResponse的Cookies集合访问的集合包含一些新Cookie,这些Cookie在服务器上创建并以Set-Cookie标头的形式传输到客户端。
Cookie不是Page类的子类,所以在使用方法上跟Seesion和Application不同。
使用Cookie的优点:
— 可配置到期规则。Cookie 可以在浏览器会话结束时到期,或者可以在客户端计算机上无限期存在,这取决于客户端的到期规则。
— 不需要任何服务器资源。Cookie存储在客户端并在发送后由服务器读取。
— 简单性。Cookie是一种基于文本的轻量结构,包含简单的键值对。
— 数据持久性。虽然客户端计算机上Cookie的持续时间取决于客户端上的Cookie过期处理和用户干预,Cookie通常是客户端上持续时间最长的数据保留形式。
使用Cookie的缺点:
— 大小受到限制。大多数浏览器对Cookie的大小有4096字节的限制,尽管在当今新的浏览器和客户端设备版本中,支持8192字节的Cookie大小已越发常见。
— 用户配置为禁用。有些用户禁用了浏览器或客户端设备接收Cookie的能力,因此限制了这一功能。
— 潜在的安全风险。Cookie可能会被篡改。用户可能会操纵其计算机上的Cookie,这意味着会对安全性造成潜在风险,或者导致依赖于Cookie的应用程序失败。另外,虽然Cookie只能将它们发送到客户端的域访问,历史上黑客已经发现从用户计算机上的其他域访问Cookie的方法。可以手动加密和解密Cookie,但这需要额外的编码,并且因为加密和解密需要耗费一定的时间而影响应用程序的性能。
七..Application对象
语法:
Application("变量名")="变量值"
代码如下:
void Page_Load(object sender, System.EventArgs e)
{
Application.Add("App1","Value1");
Application.Add("App2","Value2");
Application.Add("App3","Value3");
int N;
for(N=0;N<Application.Count;N++)
{
Response.Write("变量名:"+ Application.GetKey(N));
Response.Write("变量值:"+ Application.Get(N) +"<br>");
}
Application.Clear();
}
在本例中,首先通过Add方法添加三个Application对象,并赋以初值,接着通过Count属性得到Application对象的数量,然后通过循环操作GetKey方法和Get方法分别得到新增对象的“索引”和“索引”所对应的“值”。
执行上面代码,得到如下结果:
变量名:App1变量值:Value1
变量名:App2变量值:Value2
变量名:App3变量值:Value3
实例14-8:Application对象的加锁与解锁
Lock方法可以阻止其他客户修改存储在Application对象中的变量,以确保在同一时刻仅有一个客户可修改和存取Application变量。如果用户没有明确调用Unlock方法,则服务器将在页面文件结束或超时即可解除对Application对象的锁定。
Unlock方法可以使其他客户端在使用Lock方法锁住Application对象后,修改存储在该对象中的变量。如果未显式地调用该方法,Web服务器将在页面文件结束或超时后解锁Application对象。
使用方法如下:
Application.Lock();
Application["变量名"]="变量值";
Application.UnLock();
八..Cache对象
Get方法可以从Cache对象检索指定项,其唯一的参数key表示要检索的缓存项的标识符。该方法返回检索到的缓存项,未找到该键时为空引用。
下面的示例展示如何检索为ASP.NET文本框服务器控件缓存的值。
Cache.Get("MyTextBox.Value");
实例14-20:移除Cache对象
Remove方法可以从应用程序的Cache对象移除指定项,其唯一的参数key表示要移除的缓存项的String标识符。该方法返回从Cache移除的项。如果未找到键参数中的值,则返回空引用。
下面的示例创建一个RemoveItemFromCache函数。调用此函数时,它使用Item属性检查缓存中是否包含与Key1键值相关的对象。如果包含,则调用Remove方法来移除该对象。
public void RemoveItemFromCache(Object sender, EventArgs e)
{
if(Cache["Key1"] != null)
Cache.Remove("Key1");
}
ASP.NET提供了内置对象有Page、Request、Response、Application、Session、Server、Mail、Cookies、Cache、Trace 等等。
一..Page对象
Page对象是由System.Web.UI命名空间中的Page类来实现的,Page 类与扩展名为.aspx 的文件相关联,这些文件在运行时被编译为Page对象,并缓存在服务器内存中。Page对象提供的常用属性、方法及事件如下所示:
名 称 功 能 说 明
IsPostBack属性 获取一个值,该值表示该页是否正为响应客户端回发而加载
IsValid属性 获取一个值,该值表示页面是否通过验证
Application属性 为当前 Web 请求获取 Application 对象。
Request属性 获取请求的页的 HttpRequest 对象
Response属性 获取与 Page 关联的 HttpResponse 对象。该对象使您得以将 HTTP 响应数据发送到客户端,并包含有关该响应的信息。
Session属性 获取 ASP.NET 提供的当前 Session 对象。
Server属性 获取 Server 对象,它是HttpServerUtility 类的实例。
DataBind方法 将数据源绑定到被调用的服务器控件及其所有子控件
RegisterClientScriptBlock方法 向页面发出客户端脚本块
Init事件 当服务器控件初始化时发生
Load事件 当服务器控件加载到Page对象中时发生
Unload事件 当服务器控件从内存中卸载时发生
1.IsPostBack属性
IsPostBack属性用来获取一个布尔值,如果该值为true,则表示当前页是为响应客户端回发(例如单击按钮)而加载,否则表示当前页是首次加载和访问。
private void Page_Load(object sender, System.EventArgs e)
{
if( !Page.IsPostBack )
{
Label1.Text = "页面第一次加载!";
}
else
{
Label1.Text = "页面第二次或第二次以上加载!";
}
}
IsValid属性
IsValid属性用来获取一个布尔值,该值指示页验证是否成功,如果页验证成功,则为 true;否则为 false。一般在包含有验证服务器控件的页面中使用,只有在所有验证服务器控件都验证成功时,IsValid属性的值才为true。
private void Button_Click(Object Sender, EventArgs e)
{
if (Page.IsValid == true) //也可写成if (Page.IsValid)
{
mylabel.Text="您输入的信息通过验证!";
}
else
{
mylabel.Text="您的输入有误,请检查后重新输入!";
}
}
二..Request对象
Request
1.Request封装了客户端请求信息。Request的常见属性如下:(IsAuthenticated, Item,Params )等没添加进去作声明
类 别 | 名 称 | 描 述 |
属性 | AcceptType | 获取客户端支持的MIME类型 |
UserHostAddress | 获取客户端主机的IP地址 | |
UserHostName | 获取客户端主机名 | |
UserLanguages | 获取客户端语言信息,是一个字符串数组 | |
UserAgent | 客户端浏览器的原始代理信息 | |
UrlReferrer | 获取用户由哪个url跳转到当前页面(Uri) | |
Path | 获取当前请求的虚拟路径 | |
ContentEncoding | 设置请求对象的编码(Encoding) | |
Headers | 获取HTTP头集合 | |
QueryString | 获取HTTP查询字符串的集合(NameValueCollection) | |
Form | 获取窗体变量集合 | |
Browser | 获取客户端浏览器信息 | |
ApplicationPath | 获取请求的资源在网站上的根路径(string) | |
Cookies | 客户端发送到服务器的Cookie集合(HttpCookieCollection) |
① Browser的二级属性
类 别 | 名 称 | 描 述 |
属性 | Beta | 浏览器版本是否是Beta版 |
Version | 浏览器版本名称 | |
Platform | 来访者使用的系统平台 | |
Cookies | 浏览器是否支持Cookies | |
ActiveXControls | 浏览器是否支持ActiveX控件 | |
Type | 浏览器名称和主版本号(整数部分) | |
ClrVersion | 获取安装在客户端的.NET Frame版本 |
ListBox1.Items.Add(Request.Browser.Beta.ToString());
//获取客户端浏览器是否是Beta版,转换为字符串后添加到列表框中
ListBox1.Items.Add(Request.Browser.ClrVersion.ToString());
//获取安装在客户端的.NET Frame版本,转换为字符串后添加到列表框中
② UrlReferrer的二级属性
类 别 | 名 称 | 描 述 |
属性 | Port | 获取发出客户端请求的端口号 |
Authority | 获取服务器域名系统的主机名(IP地址)和端口号 | |
AbsolutePath | 获取URL的绝对路径 | |
Host | 获取客户端主机的主机名 | |
HostNameType | 获取URL中主机名的类型 | |
UserInfo | 获取用户名、密码或其他与指定URL相关联的信息 |
ListBox1.Items.Add(Request.UrlReferrer.Port.ToString());
//获取客户端发出客户端请求的端口号,转换为字符串后添加到列表框中
ListBox1.Items.Add(Request.UrlReferrer.Host.ToString());
//获取发出客户端请求的主机名,转换为字符串后添加到列表框中
3.Request对象的AcceptType属性的主要功能是获取客户端所支持的MIME类型
AcceptType属性返回一个字符串数组,其数组的下标下限是0,上限可通过Request对象的AcceptTypes.GetUpperBound(0)属性获得,通过循环可将数组中的值逐一输出;
MIME(Multipurpose Internet Mail Extensions)是一个有关信息格式的协议:text/plain 、image/jpeg 、text/xml 、 text/javascript......
eg:
protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) { int i; switch (RadioButtonList1.SelectedIndex) { case 0: { ListBox1.Items.Clear(); ListBox1.Items.Add(Request.Browser.Beta.ToString()); ListBox1.Items.Add(Request.Browser.Version.ToString()); ListBox1.Items.Add(Request.Browser.Platform.ToString()); ListBox1.Items.Add(Request.Browser.Cookies.ToString()); ListBox1.Items.Add(Request.Browser.ActiveXControls.ToString()); ListBox1.Items.Add(Request.Browser.Type.ToString()); ListBox1.Items.Add(Request.Browser.ClrVersion.ToString()); break; } case 1: { ListBox1.Items.Clear(); ListBox1.Items.Add(Request.UrlReferrer.Port.ToString()); ListBox1.Items.Add(Request.UrlReferrer.Authority.ToString()); ListBox1.Items.Add(Request.UrlReferrer.AbsolutePath.ToString()); ListBox1.Items.Add(Request.UrlReferrer.Host.ToString()); ListBox1.Items.Add(Request.UrlReferrer.HostNameType.ToString()); ListBox1.Items.Add(Request.UrlReferrer.UserInfo.ToString()); break; } case 2: { ListBox1.Items.Clear(); ListBox1.Items.Add(Request.UserHostAddress.ToString()); ListBox1.Items.Add(Request.UserHostName.ToString()); ListBox1.Items.Add(Request.UserLanguages[0].ToString()); ListBox1.Items.Add(Request.UserAgent.ToString()); ListBox1.Items.Add(Request.Path.ToString()); ListBox1.Items.Add(Request.ContentEncoding.ToString()); break; } case 3: { i = Request.AcceptTypes.GetUpperBound(0); ListBox1.Items.Clear(); while (i > 0) { ListBox1.Items.Add(Request.AcceptTypes[i]); i = i - 1; } break; } case 4: { i = Request.Headers.Count - 1; ListBox1.Items.Clear(); while (i > 0) { ListBox1.Items.Add(Request.Headers[i]); i = i - 1; } break; } case 5: { ListBox1.Items.Clear(); ListBox1.Items.Add(Request.QueryString["ID"]); ListBox1.Items.Add(Request.QueryString["Name"]); Break } } }
QueryString属性
Request对象的QueryString属性的功能是获取HTTP查询字符串的集合,返回一个字符串数组。在本例中,若在地址栏中输入http://localhost:2124/sun3_1/sun3_1.aspx?ID=1994&Name=sun,当选定【HTTP查询字符串】选项时,列表框中显示的值如图3-3所示。地址中“?”后面的部分,即“ID=1994&Name=sun”,被视为整个页面执行时的参数。本例中有2个,当有多个参数时,各参数间需要用“&”符号连接。(具体看上面代码)
三..Response对象
Response常用属性如下:
属性名 | 值类型 | 说明 |
Charset | string | 表示输出流的所使用的字符集 |
ContentEncoding | Encoding | 设置输出流的编码 |
ContentLength | Int | 输出流的字节大小 |
ContentType | string | 输出流的HTTP MIME类型 |
Cookies | HttpCookieCollection | 服务器发送到客户端的Cookie集合 |
Output | TextWriter | 服务器响应对象的字符输出流 |
RedirectLocation BufferOutPut | string | 将当前请求重定向 是否使用缓存 |
属性名 | 返回值类型 | 说明 |
AppendCookie | void | 向响应对象的Cookie集合中增加一个Cookie |
Clear | void | 清空缓冲区中的所有内容输出 |
Close | void | 关闭当前服务器到客户端的连接 |
End | void | 终止响应,并且将缓冲区中的输出发送到客户端 |
Redirect write writefile Flush | void void void void | 重定向当前请求 将字符串输送到客户端 将文本文件输送到客户端 强制输出缓存的所有数据 |
Response.Write("新年快乐"); //将“新年快乐”输出到网页上
Response.WriteFile("f:\\sun.txt"); //将f盘根目录下的sun.txt文件中的内容输出到网页上
Response.Redirect("login.htm"); //将页面跳转到本站点中的login.htm页面上
Response.Redirect("http://www.sina.com.cn"); //将页面跳转到www.sina.com.cn页面上
Response.Close() //断开页面和服务器端的连接
四..Server对象
属性名 | 返回值类型 | 说明 |
Execute | void | 执行指定的资源,并且在执行完之后再执行本页的代码 |
HtmlDecode | string | 消除对特殊字符串编码的影响 |
HtmlEncode | string | 对特殊字符串进行编码 |
MapPath | string | 获取指定相对路径在服务器上的无力路径(一般用于上传资源需要服务端物理路径时使用) |
Transfer | void | 停止执行当前程序,执行指定的资源(内网同站点使用,且地址显示不会改变 和response.redirect的区别已经说明) |
UrlDecode | string | 对路径字符串进行解码 |
UrlEncode CreateObject | string | 对路径字符串进行编码 创建COM 对象的一个服务器实例 |
五..Session对象
属 性 | 说 明 | 属 性 值 |
Count | 获取会话状态集合中Session对象的个数 | Session对象的个数 |
TimeOut | 获取并设置在会话状态提供程序终止会话之前各请求之间所允许的超时期限 | 超时期限(以分钟为单位) |
SessionID | 获取用于标识会话的唯一会话ID | 会话ID |
方 法 | 说 明 |
Add | 新增一个Session对象 |
Clear | 清除会话状态中的所有值 |
Remove | 删除会话状态集合中的项 |
RemoveAll | 清除所有会话状态值 |
在具体应用中,可以这样使用:
int userId = 1;
string userName = "test";
string userPwd = "sdgtrertkl";
Session.Add("userId",userId);
Session.Add("userName", userName);
Session.Add("userPwd", userPwd);
在上面例子中创建了userId,userName,userPwd三个Session来存储用户的登录信息。程序随时都可以通过这三个Session对象来查看用户的连接状态,这是实际的项目中最常见的Session应用。
需要注意的是,也可以不使用Add方法来设置Session对象,语法如下:
Session["变量名"]=变量值;
这样,上面的例子就可以改为:
Session["userId"] = userId;
Session["userName"] = userName;
Session["userPwd"] = userPwd;
Session即会话,是指一个用户在一段时间内对某一个站点的一次访问。
Session对象在.NET中对应HttpSessionState类,表示“会话状态”,可以保存与当前用户会话相关的信息。
Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息。用户在应用程序的页面切换时,Session对象的变量不会被清除。
对于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的;而不同用户会话访问到的Session对象的内容则各不相同。 Session可以保存变量,该变量只能供一个用户使用,也就是说,每一个网页浏览者都有自己的Session对象变量,即Session对象具有唯一性。
(1)将新的项添加到会话状态中
语法格式为:
Session ("键名") = 值
或者
Session.Add( "键名" , 值)
(2)按名称获取会话状态中的值
语法格式为:
变量 = Session ("键名")
或者
变量 = Session.Item("键名")
(3)删除会话状态集合中的项
语法格式为:
Session.Remove("键名")
(4)清除会话状态中的所有值
语法格式为:
Session.RemoveAll()
或者
Session.Clear()
(5)取消当前会话
语法格式为:
Session.Abandon()
(6)设置会话状态的超时期限,以分钟为单位。
语法格式为:
Session.TimeOut = 数值
Global.asax 文件中有2个事件应用于Session对象
事件名称 说明
Session_Start 在会话启动时激发
Session_End 在会话结束时激发
eg:
string userName;
if(Session["UserName"]!=null)
{
//当指定名称的Session存在时,获取指定Session的值
userName=(string)Session["UserName"];
}
六..Cookie对象
属 性 | 说 明 | 属 性 值 |
Name | 获取或设置Cookie的名称 | Cookie的名称 |
Value | 获取或设置Cookie的Value | Cookie的Value |
Expires | 获取或设置Cookie的过期日期和时间 | 作为DateTime实例的Cookie过期日期和时间 |
Version | 获取或设置此Cookie符合的HTTP状态维护版本 | 此Cookie符合的HTTP状态维护版本 |
方 法 | 说 明 |
Add | 新增一个Cookie变量 |
Clear | 清除Cookie集合内的变量 |
Get | 通过变量名或索引得到Cookie的变量值 |
GetKey | 以索引值来获取Cookie的变量名称 |
Remove | 通过Cookie变量名来删除Cookie变量 |
ASP.NET包含两个内部Cookie集合。通过HttpRequest的Cookies集合访问的集合包含通过Cookie标头从客户端传送到服务器的Cookie。通过HttpResponse的Cookies集合访问的集合包含一些新Cookie,这些Cookie在服务器上创建并以Set-Cookie标头的形式传输到客户端。
Cookie不是Page类的子类,所以在使用方法上跟Seesion和Application不同。
使用Cookie的优点:
— 可配置到期规则。Cookie 可以在浏览器会话结束时到期,或者可以在客户端计算机上无限期存在,这取决于客户端的到期规则。
— 不需要任何服务器资源。Cookie存储在客户端并在发送后由服务器读取。
— 简单性。Cookie是一种基于文本的轻量结构,包含简单的键值对。
— 数据持久性。虽然客户端计算机上Cookie的持续时间取决于客户端上的Cookie过期处理和用户干预,Cookie通常是客户端上持续时间最长的数据保留形式。
使用Cookie的缺点:
— 大小受到限制。大多数浏览器对Cookie的大小有4096字节的限制,尽管在当今新的浏览器和客户端设备版本中,支持8192字节的Cookie大小已越发常见。
— 用户配置为禁用。有些用户禁用了浏览器或客户端设备接收Cookie的能力,因此限制了这一功能。
— 潜在的安全风险。Cookie可能会被篡改。用户可能会操纵其计算机上的Cookie,这意味着会对安全性造成潜在风险,或者导致依赖于Cookie的应用程序失败。另外,虽然Cookie只能将它们发送到客户端的域访问,历史上黑客已经发现从用户计算机上的其他域访问Cookie的方法。可以手动加密和解密Cookie,但这需要额外的编码,并且因为加密和解密需要耗费一定的时间而影响应用程序的性能。
HttpCookie MyCookie = new HttpCookie("LastVisit"); DateTime now = DateTime.Now; MyCookie.Value = now.ToString(); MyCookie.Expires = now.AddHours(1); Response.Cookies.Add(MyCookie);
七..Application对象
属 性 | 说 明 | 属 性 值 |
AllKeys | 获取HttpApplicationState集合中的访问键 | HttpApplicationState对象名的字符串数组 |
Count | 获取HttpApplicationState集合中的对象数 | 集合中的Item对象数。默认为0 |
方 法 | 说 明 |
Add | 新增一个新的Application对象变量 |
Clear | 清除全部的Application对象变量 |
Get | 使用索引关键字或变数名称得到变量值 |
GetKey | 使用索引关键字來获取变量名称 |
Lock | 锁定全部的Application变量 |
Remove | 使用变量名称删除一个Application对象 |
RemoveAll | 删除全部的Application对象变量 |
Set | 使用变量名更新一个Application对象变量的內容 |
UnLock | 解除锁定的Application变量 |
Application("变量名")="变量值"
代码如下:
void Page_Load(object sender, System.EventArgs e)
{
Application.Add("App1","Value1");
Application.Add("App2","Value2");
Application.Add("App3","Value3");
int N;
for(N=0;N<Application.Count;N++)
{
Response.Write("变量名:"+ Application.GetKey(N));
Response.Write("变量值:"+ Application.Get(N) +"<br>");
}
Application.Clear();
}
在本例中,首先通过Add方法添加三个Application对象,并赋以初值,接着通过Count属性得到Application对象的数量,然后通过循环操作GetKey方法和Get方法分别得到新增对象的“索引”和“索引”所对应的“值”。
执行上面代码,得到如下结果:
变量名:App1变量值:Value1
变量名:App2变量值:Value2
变量名:App3变量值:Value3
实例14-8:Application对象的加锁与解锁
Lock方法可以阻止其他客户修改存储在Application对象中的变量,以确保在同一时刻仅有一个客户可修改和存取Application变量。如果用户没有明确调用Unlock方法,则服务器将在页面文件结束或超时即可解除对Application对象的锁定。
Unlock方法可以使其他客户端在使用Lock方法锁住Application对象后,修改存储在该对象中的变量。如果未显式地调用该方法,Web服务器将在页面文件结束或超时后解锁Application对象。
使用方法如下:
Application.Lock();
Application["变量名"]="变量值";
Application.UnLock();
八..Cache对象
属 性 | 说 明 | 属 性 值 |
Count | 获取存储在缓存中的项数。当监视应用程序性能或使用ASP.NET跟踪功能时,此属性可能非常有用 | 存储在缓存中的项数 |
Item | 获取或设置指定键处的缓存项 | 表示缓存项的键的String对象 |
方 法 | 说 明 |
Add | 将指定项添加到 Cache 对象,该对象具有依赖项、过期和优先级策略,以及一个委托(可用于在从 Cache 移除插入项时通知应用程序) |
Get | 从 Cache 对象检索指定项 |
Remove | 从应用程序的 Cache 对象移除指定项 |
Insert | 向Cache对象插入项。使用此方法的某一版本改写具有相同key参数的现有Cache项 |
下面的示例展示如何检索为ASP.NET文本框服务器控件缓存的值。
Cache.Get("MyTextBox.Value");
实例14-20:移除Cache对象
Remove方法可以从应用程序的Cache对象移除指定项,其唯一的参数key表示要移除的缓存项的String标识符。该方法返回从Cache移除的项。如果未找到键参数中的值,则返回空引用。
下面的示例创建一个RemoveItemFromCache函数。调用此函数时,它使用Item属性检查缓存中是否包含与Key1键值相关的对象。如果包含,则调用Remove方法来移除该对象。
public void RemoveItemFromCache(Object sender, EventArgs e)
{
if(Cache["Key1"] != null)
Cache.Remove("Key1");
}
相关文章推荐
- ASP.NET的内置对象:Request对象
- ASP.NET的内置对象
- ASP.NET(二) Web开发——内置对象
- ASP.NET的内置对象
- asp.net的内置对象
- 动态网站开发技术学习3:ASP.NET内置对象之Response对象
- 实验四 使用ASP.NET内置对象 总结
- ASP.NET七大内置对象
- ASP.NET~常用内置对象
- 【Asp.net】--7大内置对象了解
- 重温ASP.NET内置对象之Request
- ASP.NET内置对象详解
- 实用ASP.NET七大内置对象详解
- 实用ASP.NET七大内置对象详解
- ASP.NET的内置对象:Application对象
- ASP.NET内置对象(详细)
- ASP.NET的内置对象
- ASP.NET内置对象学习
- ASP.NET内置对象详解