大家来帮忙,小弟只有最后50分了,谁答得好,就全部奉献!(在线等待)

liq1979 2003-08-13 10:34:50
1、小弟开发一个项目,其中使用了微软的IE WebControl控件中的Tabstrip,在本机上调试都是可以正确显示该控件的,可我把这个项目创建为安装和部署项目以后,把该项目安装到其他机器上,该控件显示就出现了问题,没有出错,就是不能显示,整个项目中,我已经把Microsoft.Web.UI.WebControls添加为引用,放在bin目录里面。安装好以后的其他机器上,我也看过bin目录下有这个控件的动态链接库Microsoft.Web.UI.WebControls.dll。问题就是如何显示这个Tabstrip控件?
2、当关闭浏览器以后,session对象仍旧存在,只有调用Session.Abanbon()以后,才能调用Global.asax中Session_end的方法。我说的这句话是否正确,如果正确,那我该如何做,也就是当点击关闭浏览器这个"X"如何使Session.Abanbon()?
3、如何控制两个用户使用相同帐号登陆的情况?也就是说,我用一个用户名登录以后,别人就不能用该用户名登录,如果登录,就警告他,已经有人用这个账户登录!
以上是小弟在开发项目过程中碰到的一些问题,希望各位朋友一起帮帮我!谢谢!
...全文
32 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liq1979 2003-08-13
  • 打赏
  • 举报
回复
好的,多谢river168 !我结贴了!
river168 2003-08-13
  • 打赏
  • 举报
回复
1.如果你在ONUNLOAD里调用文件退出,可以直接在这个文件里更新数据库,不用放到SESSON_END.
就不存在SESSION里无值了.

2.每个用户登录后,APPLICATION里加上当前所有的用户名列表, 在SESSION_END时,遍历APPLICATION列表,如果SESSION["NAME"]为NULL时,更新这个SESSION["NAME"]的数据库标识.

lizhaohua1998 2003-08-13
  • 打赏
  • 举报
回复
第三点你可以试试这个方法:
一般论谈上都是这样做的,他们在用户登录后会把信息放到另外的一个表中,这样一来即可以标记出该用户的当前状态、也可以识别是不是重复登录。
要求:在每个页面装载时进行判断,比如大于十分钟的就把标记改成不在线的,这样其他的人就可以用该用户名登录,否则不行
liq1979 2003-08-13
  • 打赏
  • 举报
回复
数据库标记不会永远是真的,你在GLOBAL里SESSION结束时取消标记即可. 当然最好是在ONUNLOAD里用脚本提交到一ASP文件里注销SESSION及取消标记,这样用户马上再登录也没有问题了.
我就要问了,session_end是在session.abandon()以后才结束的,那我该如何取消这个标记呢,因为我想用"update useronline SET isonline = '否' where username =' + (string)Session["username"] + "'";那么既然session已经没有了,我也不能用where这个条件来控制了,那最后的结果是把这张useronline表中的所有记录的isonlin都设置为否了阿!我该如何控制呢?这个问题问好我就结贴了,谢谢river168
river168 2003-08-13
  • 打赏
  • 举报
回复
20分钟是指客户端没有任何信息返回服务器时,SESSION结束.如果一直操作,SESSION就会一直保持.

打开页面20分钟没有操作和关闭浏览器后过了20分钟后的情况是一样的.
liq1979 2003-08-13
  • 打赏
  • 举报
回复
river168(海阔天空.net) ,我现在session.timeout是为默认的20分钟,那我如果一直在操作的话,超过了20分钟以后,我的session会自动消失吗?这个情况和我打开浏览器有20分钟没有操作的情况是否一样,和我关闭浏览器后,过了20分钟后的情况是否一样?
river168 2003-08-13
  • 打赏
  • 举报
回复
数据库标记不会永远是真的,你在GLOBAL里SESSION结束时取消标记即可. 当然最好是在ONUNLOAD里用脚本提交到一ASP文件里注销SESSION及取消标记,这样用户马上再登录也没有问题了.
chnking 2003-08-13
  • 打赏
  • 举报
回复
1,将你开发用的服务器上的IIS根目录下的叫webctrl_client的目录你要拷贝到要安装的服务器的IIS根目录上.

2,Session在客户端的浏览器关闭后不会马上终止,而是要到设定的过期时间后过期,看下面的Session的原理:
○ 第一次客户端访问服务器,会得到一个SessionID,以非永久性的 Cookie发送到客户端。
○ 在这个浏览器关闭之前访问这个URL,浏览器都会把这个SessionID发送到服务端,服务端根据SessionID来维持对应此客户的服务端的各种状态(就是Session中保存的各种值),在web应用程序中可以对这些Session进行操作。
○ 服务端维护此SessionID的过期时间,IIS中可以设置Session的超时时间。每次请求都将导致服务端将此SessioID的过期时间延长一个设置的超时时间。
○ 当服务端发现某个SessionID已经过时,即某个客户已经在设置的超时时间内没有再次访问此站点,即将此SessionID,连同跟此SessionID相关的所有Session变量删除。
○ 客户端的浏览器未关闭前,并不知道服务端已经将这个SessionID删除,客户端依旧发送此SessionID的cookie到服务端,只是此时的服务端已经不认识此SessionID了,会将此用户当做新用户,再次分配一个新的SessionID。

3,要把登录进来的用户名保存到数据库,作为在线用户的一个列表,每次有人登录都跟这个列表进行比较,就能知道是否再次登录了。
liq1979 2003-08-13
  • 打赏
  • 举报
回复
river168,你好,如果用户是通过点击浏览器上的"X"关闭浏览器的话,那么那个数据库中的该用户登录标记就永远是真的,下次这个用户登录的话,就会出现不能登录的提示了,我觉得session问题真是很难解决的问题。
虚拟过客 2003-08-13
  • 打赏
  • 举报
回复
路过支持支持支持支持支持支持支持支持支持支持支持█████████支持支持
支持支持支持支持支持支持支持支持支持███████████████支持支持
支持支持支持支持支持支持支持无██████████████████支持支持
支持支持支持支持支持无████████████████支持支持支持支持支持
支持支持支持支持███████无███支持█████支持支持支持支持支持无
支持无████████████支持支持支持████支持支持支持支持支持支持
无██████████████支持支持支持████支持支持支持支持支持支持
无████████████支持支持支持无███████████支持支持支持
无████████████支持支持支持██████████████支持支持
支持██████████支持支持无██████支持无███████支持支持
支持支持支持支持████支持支持无████支持支持支持█████支持支持无
支持支持支持支持████支持支持████支持██支持无█████支持支持无
支持支持支持支持████支持支持████支持████无█████支持支持无
支持支持支持支持████支持支持████支持████无█████支持支持无
支持支持支持支持████支持支持████支持███支持█████支持支持无
支持支持支持支持████支持支持████支持███支持█████支持支持无
支持支持支持支持████支持支持████无████支持█████支持支持无
支持支持支持支持████支持支持████无████支持█████支持支持无
支持支持支持支持████支持支持████无████支持█████支持支持无
支持支持支持支持████支持支持████无████支持█████支持支持无
支持支持支持支持████支持支持███支持████支持█████支持支持无
支持██支持无█████支持支持███支持███支持无█████支持支持无
支持██████████支持支持无██支持██支持支持█████支持支持无
支持无█████████支持支持支持支持███支持支持无████支持支持无
支持支持无███████支持支持支持支持███无████支持支持支持支持无
支持支持支持██████支持支持支持无████支持█████支持支持支持无
支持支持支持支持无███支持支持支持█████支持无███████支持支持
支持支持支持支持支持支持支持支持██████支持支持无██████支持支持
支持支持支持支持支持支持支持无██████支持支持支持███████支持无
支持支持支持支持支持支持支持█████支持支持支持支持无██████支持无
支持支持支持支持支持支持无█████支持支持支持支持支持无████支持支持
支持支持支持支持支持支持███支持支持支持支持支持支持支持无███支持支持
river168 2003-08-13
  • 打赏
  • 举报
回复
2.我以前有个解决方法: 就是在ONUNLOAD时,运行一段JAVASCRIPT, 用XMLHTTP提交到一个ASP页里注销当前用户.还有个更简单的方法是在ONUNLOAD时打开一个很小的ASP文件窗口,在这个ASP文件里注销SESSION,取消数据库里的用户登陆标记.然后再关闭这个小窗口.
luckysusan 2003-08-13
  • 打赏
  • 举报
回复
1.客户端IE必须5.5或以上!
2.应该不存在
3.在数据库里面用个boolean字段记录该用户是否已经登陆!登陆时对此进行判断!
river168 2003-08-13
  • 打赏
  • 举报
回复
1.有个名称为webctrl_client的目录你要拷贝到其他机器的站点根目录上.
2.这个好像是不好控制的,一般SESSION有个默认过期时间(20分钟)
3.在数据库用一个字段来控制,登入的用户就标记一下,登出或SESSION过期时就取消标记.但这样的话,他关闭IE窗口后,可能要等SESSION过期后才能再登陆.

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧