通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>NET专区>>正文 新版上线![旧版]
注:打开慢时请稍等

管理应用程序状态

http://www.iyit.net  日期:2006-8-18 17:57:05  来源:  点击:
参加讨论使用应用程序状态

本示例阐释如何使用应用程序状态读取 Application_Start 中的数据集。

 
VB Application2.aspx

[运行示例] | [查看源代码]

因为应用程序和它存储的所有对象可以同时由不同的线程访问,所以最好只将很少修改的数据与应用程序范围一起存储。理想情况是,对象在 Application_Start 事件中初始化,对它的进一步访问是只读的。

在下面的示例中,文件在 Application_Start(在 Global.asax 文件中定义)中读取,内容则以应用程序状态存储在 DataView 对象中。

Sub Application_Start()
    Dim ds As New DataSet()

    Dim fs As New FileStream(Server.MapPath("schemadata.xml"),FileMode.Open,FileAccess.Read)
    Dim reader As New StreamReader(fs)
    ds.ReadXml(reader)
    fs.Close()

    Dim view As New DataView (ds.Tables(0))
    Application("Source") = view
End Sub
C# VB JScript  

Page_Load 方法中,DataView 随后被检索并用于填充 DataGrid 对象:

Sub Page_Load(sender As Object, e As EventArgs)
    Dim Source As New DataView  = CType(Application("Source"), DataView)
    ...
    MyDataGrid.DataSource = Source
    ...
End Sub
C# VB JScript  

此解决方案的优点是只有第一个请求付出检索数据的代价。所有后面的请求则使用已有的 DataView 对象。由于数据自初始化后从不修改,所以不必为序列化访问做任何规定。

使用会话状态

下例说明如何使用会话状态存储易失的用户首选项。

 
VB Session1.aspx

[运行示例] | [查看源代码]

为了在会话期间为用户提供单独的数据,数据可与会话范围一起存储。在下面的示例中,在 Global.asax 文件中的 Session_Start 事件中初始化用户首选项的值。

Sub Session_Start()
    Session("BackColor") = "beige"
    ...
End Sub
C# VB JScript  

在下面的自定义页中,根据用户输入在 Submit_Click 事件处理程序中修改用户首选项的值。

Protected Sub Submit_Click(sender As Object, e As EventArgs)
    Session("BackColor") = BackColor.Value
    ...

    Response.Redirect(State("Referer").ToString())
End Sub
C# VB JScript  

使用 GetStyle 方法检索个别值:

Protected GetStyle(key As String) As String
    Return(Session(key).ToString())
End Sub
C# VB JScript  

GetStyle 方法用于构造会话特定样式:

若要验证值是否真的与会话范围一起存储了,请将示例页打开两次,然后在第一个浏览器窗口中更改一个值并刷新第二个浏览器窗口。因为两个浏览器实例共享一个公共 Session 对象,所以第二个窗口获得此更改。

配置会话状态:可以通过 web.config 文件中的 <sessionState> 节配置会话状态功能。若要使默认的超时时间(20 分钟)延长一倍,可以将下列内容添加到应用程序的 web.config 文件:

<sessionState timeout="40" />

默认情况下,ASP.NET 像 ASP 一样,在处理请求的同一进程中存储会话状态。如果 Cookie 不可用,可以通过将会话标识符添加到 URL 来跟踪会话。若要启用此功能,请设置以下内容:

<sessionState cookieless="true" />

默认情况下,ASP.NET 像 ASP 一样,在处理请求的同一进程中存储会话状态。另外,ASP.NET 可以在外部进程中存储会话数据,而外部进程甚至可以驻留在另一台计算机上。若要启用此功能:

  • 使用服务管理单元或者通过在命令行上执行“net start aspnet_state”来启动 ASP.NET 状态服务。默认情况下,状态服务在端口 42424 上侦听。若要更改此端口,请修改服务的注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSte\Services\aspnet_state\Parameters\Port
  • <sessionState> 节的 mode 属性设置为“StateServer”。
  • 用启动 aspnet_state 的计算机的值配置 stateConnectionString 属性。
下面的示例假设状态服务在 Web 服务器所在的同一台计算机(“localhost”)上运行,并且使用默认端口 (42424):
<sessionState
  mode="StateServer"
  stateConnectionString="tcpip=localhost:42424"
/>
注意,如果对上面的示例使用此设置,可以重置 Web 服务器(在命令行上输入 iisreset),会话状态值将保持。

使用客户端 Cookie

下面的示例说明如何使用客户端 Cookie 存储易失的用户首选项。

 
VB Cookies1.aspx

[运行示例] | [查看源代码]

在客户端存储 Cookie 是 ASP.NET 的会话状态将请求与会话关联的方法之一。Cookie 也可以直接用于在请求之间保持数据,但数据随后将存储在客户端并随每个请求一起发送到服务器。浏览器对 Cookie 的大小有限制,因此,只有不超过 4096 字节才能保证被接受。

当数据存储在客户端时,文件 cookies1.aspx 中的 Page_Load 方法检查客户端是否已发送了 Cookie。如果没有,则创建并初始化一个新的 Cookie 并将其存储在客户端:

Protected Sub Page_Load(sender As Object, e As EventArgs)
    If Request.Cookies("preferences1") = Null Then
        Dim cookie As New HttpCookie("preferences1")
        cookie.Values.Add("ForeColor", "black")
        ...
        Response.AppendCookie(cookie)
    End If
End Sub
C# VB JScript  

在同一页上,再次使用 GetStyle 方法提供存储在 Cookie 中的个别值:

Protected Function GetStyle(key As String) As String
  Dim cookie As HttpCookie = Request.Cookies("preferences1")
  If cookie <> Null Then
    Select Case key
      Case "ForeColor"
        Return(cookie.Values("ForeColor"))
      Case ...
    End Select
  End If
  Return("")
End Function
C# VB JScript  

打开 cookies1.aspx 页并修改首选项以验证此示例是否运行。在另一窗口中打开此页,它应获得新的首选项。关闭所有浏览器窗口,然后再次打开 cookies1.aspx 页。这应删除临时 Cookie 并还原默认首选项值。

 
VB Cookies2.aspx

[运行示例] | [查看源代码]

若要使 Cookie 在会话之间持久,必须将 HttpCookie 类上的 Expires 属性设置为将来的某个日期。除了 Cookie.Expires 的赋值,下列自定义 .aspx 页上的代码与上一个示例相同:

Protected Sub Submit_Click(sender As Object, e As EventArgs)
    Dim cookie As New HttpCookie("preferences2")
    cookie.Values.Add("ForeColor",ForeColor.Value)
    ...
    cookie.Expires = DateTime.MaxValue ' Never Expires

    Response.AppendCookie(cookie)

    Response.Redirect(State("Referer").ToString())
End Sub
C# VB JScript  

修改值、关闭所有浏览器窗口并再次打开 cookies2.aspx,以验证此示例是否运行。窗口仍应显示自定义的值。

使用视图状态

此示例说明如何使用 ViewState 属性存储请求特定的值。

 
VB PageState1.aspx

[运行示例] | [查看源代码]

ASP.NET 为每个控件提供视图状态的服务器端注记。控件可以使用类 StateBag 的一个实例上的 ViewState 属性,在请求之间保存它的内部状态。StateBag 类提供词典样式的接口来存储与字符串键关联的对象。

文件 pagestate1.aspx 显示一个可见的面板并使用键 PanelIndex 在该页的视图状态下存储它的索引:

Protected Sub Next_Click(sender As Object, e As EventArgs)
    Dim PrevPanelId As String = "Panel" + ViewState("PanelIndex").ToString()
    ViewState("PanelIndex") = CType(ViewState("PanelIndex") + 1, Integer)
    Dim PanelId As String = "Panel" + ViewState("PanelIndex").ToString()
    ...
End Sub
C# VB JScript  

注意,如果在多个浏览器窗口中打开该页,每个浏览器窗口最初将显示此名称面板。每个窗口可以独立地在面板之间定位。

本节小结

  1. 使用应用程序状态变量存储很少修改但经常使用的数据。
  2. 使用会话状态变量存储特定于某个会话或用户的数据。数据全部存储在服务器上。这种方法适于短期的、大量的或敏感的数据。
  3. 将少量易失数据存储在非持久性 Cookie 中。数据存储在客户端,在每次请求时发送到服务器,并在客户端结束执行时失效。
  4. 将少量非易失数据存储在持久性 Cookie 中。数据存储在客户端直到失效,并在每次请求时发送到服务器。
  5. 将少量请求特定的数据存储在视图状态中。数据从服务器发送到客户端并返回。

编辑: [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:使用 Global.asax 文件
下一篇:没有了
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
最新更新 热点排行 推荐新闻
管理应用程序状态
使用 Global.asax 文件
ASP.NET Web 服务 应用程序概述
HTML 文本模式匹配
WebService 行为
管理应用程序状态
使用 Global.asax 文件
ASP.NET Web 服务 应用程序概述
HTML 文本模式匹配
WebService 行为
使用对象和内部对象
在 XML Web 服务中使用数据
XML Web 服务类型封送处理
编写简单的 Web 服务
介绍 XML Web 服务
对控件应用样式
管理应用程序状态
使用 Global.asax 文件
ASP.NET Web 服务 应用程序概述
HTML 文本模式匹配
WIN XP蓝屏代码大全
MSN监听软件下载热 轻松监视局域网隐私
WinRAR将推出免费正版序列号!
让WinRAR汗颜的压缩软件UHARC
备份软件GHOST使用教程
[JAVA]十四种Java开发工具点评
初学java常用开发工具介绍
Win XP操作系统优化精髓
XP中重新安装或修复IE6的三种方法
轻易破解Winrar,Winzip密码
在ASP.net中保存/取出图片入/从SQL数据
一个.net 压缩位图至JPEG的代码
ASP.NET2.0数据库入门之常见错误
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
如何控制我的电脑只允许登录我自己的Q
QQ密码被盗怎么办!我教你找回密码
使用身份验证来禁止内部用户上网 
Win Powershell遭遇病毒 最好升级软件
SiteAdvisor 助你远离恶意网站
提升流量 站长应该做的五件事
XP中重新安装或修复IE6的三种方法
XP下Asp.net访问被拒绝
教你封杀FSO躲避FSO木马的侵扰
让WinRAR汗颜的压缩软件UHARC
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights ? 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息