在asp里面,session对象可以用来保存一个com对象,然后通过session对想来调用这个com对象的方法,但是c#并不支持后期绑定,请问有什么办法可解决这个问题?
解决方案 »
- javascript 对数组从小到大进行排序怎么做 ?
- 类似QQ邮箱的多附件上传删除
- Asp.net网页中如何实现不同控件之间的输入法切换(比如中英文)
- 痛苦的我,提出菜鸟的问题,页面间传值的问题
- 新人超笨的问题
- aspnetpager在firefox里面有漏洞,请问高手怎么解决呢?
- 求助,伪静态的疑问
- 一张asp.net用引多子页面(asp.net)急急急!!!
- 大家推荐一个ORM框架
- 用什么代码可以清空一个session,我的意思是在内存中也不存在了?谢谢~!
- 如何用c#中的正则匹配下面的字符?
- 这个问题怎么解决啊?javascript和服务器属性矛盾(有代码) 所有的分只有这些了,急!帮帮忙,在线等,马上给分
yourcom c1 = ...
Session["com"] = c1;
....
other:try{
yourcom c2 = (yourcom)Sessin["com"];
c2.method();
}
用Session是不是不安全啊?
1、 变量的实质:是一个存储单元在内存空间中的一个符号化的地址。
2、 变量的作用域:是指定变量的有效范围。
分为:
过程级变量:作用域仅局限于该过程或函数内部。
脚本级变量:作用域为当前的整个ASP页面。
【引入】
从这里我们可以看出,变量的作用域最大也仅是当前页面范围。这给页面与页面之间的数据传递和记录会话状态造成一定的困难。为此,ASP提供了Session和Application对象以及ASP的工程文件global.asa。
ASP允许开发者利用会话这一工具从一个页面到另一个页面跟踪用户。当用户打开一个建立会话的ASP网页时,会话被建立,用户在该站点从一个页面浏览到另一个页面时,会话将会继续,直到该用户长时间不访问该站点或关闭该站点的所有窗口,或者打开了一个终止会话的ASP网页。
【新课】
1、 创建Session对象
我们可以利用Session对象存储普通变量或对象变量,创建出具有Session级作用域的变量。Session对象创建的变量我们可以用于存储和记录用户信息。
创建方法:Session(“变量名”)
说明:
创建之后,就可将Session(”变量名”)作为一个整体,按照普通变量的用法来使用。
例:若要创建一个Session级的变量passflg,并且给该变量赋初值为0。
<% Session(“passflg”)=0 %>
2、 Session对象的属性
1)、SessionID:
返回当前会话的会话标识符。它是由服务器在生成会话时,通过复杂算法产生的一组数值,它惟一地标识了每个用户的会话。
例:输出当前会话的标识符
<%=Session.SessionID%>
2)、TimeOut:
以分钟为单位定义Session会话超时的时间期限。
会话超时的时限可在IIS服务器中设置,其默认值为20分钟。也可在页面中利用该属性来设置。
例:若设置会话超时的时间为5分钟。
<% Session.TimeOut=5 %>
说明:
在设置TimeOut属性时,可根据具体需要确定数值。如果该值太小,超时会过于频繁的发生,如果该值太大,可能会消耗过多的服务器资源。
3、 Session对象的方法
Abandon方法:结束当前会话
用法:
<% Session.Abandon %>
说明:
Abandon方法用于主动结束会话,若没有调用该方法,当会话超时后,也会自动结束当前会话。
4、 Session对象的集合
Contents集合:包含一个会话建立的所有变量。
Contents集合用来确定某一个会话变量的值,或者用一个循环来检索所有会话变量的值。
语法:
Session.Contents(“变量名”)或者Session(“变量名”)
Session对象使用实例:
course.asp页面需要授权访问,在访问该页面之前,要求输入用户名和密码,并进行校验,若密码正确,则允许访问,若不正确,则输出相应的提示信息。在course.asp页面中,为防止用户直接访问,要求对访问用户是否授权进行判断,若未授权,则返回到密码校验页面。
分析:可单独设计一密码校验页面,如checkuser.htm,用以接收用户名和密码,若密码正确,则引导到course.asp页面,并设置授权标志变量为1,在course.asp页面中,通过判断授权标志变量是否为1,来决定是否允许访问。
而由上课开始的知识回顾里我们知道,脚本级变量的作用域仅限于当前页面,而此处授权标志变量需要跨页面传递数据,因此,我们需要用Session对象创建一个具有Session作用域的变量。流程图: 验证失败,返回登陆页面
验证成功
实现代码:
checkuser.htm
<html>
<head><title>用户校验</title></head>
<body>
<form name=”checkuser” method=”post” action=”check.asp”>
用户名:<input type=”text” name=”username”><br>
密码:<input type=”password” name=”password”><br><br>
<input type=”submit” value=”确定”><input type=”reset” value=”取消”>
</form>
</body>
</html>
check.asp
<%
dim user,pass
user=Request.Form(“username”) ‘从表单中获得名称为username界面对象的值
pass=Request.Form(“password”) ‘从表单中获得名称为password界面对象的值
If pass=”okpass” and user=”okuser” Then
Session(“passflg”)=1 ‘设置授权标志
Response.Redirect “course.asp” ‘跳转到course.asp页面
Else
Session(“passflg”)=0 ‘设置未授权标志
Response.write “密码错误!<br><a href=’checkuser.htm’>返回</a>”
End if
%>course.asp
开始处放入以下代码:
<% If Session(“passflg”)=0 Then Response.Redirect “checkuser.htm” %>
‘检测用户是否被授权,如果已授权,则显示页面,如果未授权,则跳转到登录页面checkuser.htm
【实例指导】
~~~~好像是这么说的吧!
在asp里面,session对象可以用来保存一个com对象,然后通过session对想来调用这个com对象的方法,但是c#并不支持后期绑定,请问有什么办法可解决这个问题?
----------------------------------------------------------------------今天刚做了一个这个东西, 把一棵树放到session里了。你直接操作session里的对象是不行的,可以考虑 把session里的对象 强制类型转换后 在复制出一份备份来用。错误代码:
treeview tvTemp=(treeview)session["tv1"];
这里的tvTemp指向session里的对象,不可以直接操作和显示,不过你可以这样。正确代码:
//提取session中保存的树
TreeView tvTemp=(Microsoft.Web.UI.WebControls.TreeView)Session["treeV"];
//清除地市树上的节点集合
this.treeV.Nodes.Clear();
TreeNode tnTemp=(TreeNode)tvTemp.Nodes[0].Clone(); //附值一个复制对象,这样就能显示和操作了
this.treeV.Nodes.Add(tnTemp);
fangxinggood(我的老婆是困困)
差点看错了!