判断是否已经登录ASP.net(C#)
名与密码正确,查看(appliction中的一个list集合,是否包括当前登录者的编号)如果包括,提示登录错误。如果没有,登录成功。///////////////////...
名与密码正确,查看(appliction 中的一个list集合,是否包括当前登录者的编号)如果包括,提示登录错误。如果没有,登录成功。
/////////////////////////////////////////////////////////////////////////////////
登录成功,将登陆者的编号存入appliction 中的list集合中。
//////////////////////////////////
退出时,删除appliction 中list内的相应的编号。
/////////////////////////////////
但,问题是,用户正常退出没问题。
但对于多页面浏览器、或者异常情况(如,死机、掉网),这个list就没法删除了。
http://shirlly.javaeye.com/blog/660249
你们觉得,这个回答怎么样? 展开
/////////////////////////////////////////////////////////////////////////////////
登录成功,将登陆者的编号存入appliction 中的list集合中。
//////////////////////////////////
退出时,删除appliction 中list内的相应的编号。
/////////////////////////////////
但,问题是,用户正常退出没问题。
但对于多页面浏览器、或者异常情况(如,死机、掉网),这个list就没法删除了。
http://shirlly.javaeye.com/blog/660249
你们觉得,这个回答怎么样? 展开
4个回答
展开全部
请这样处理。appliction 中存放了 当前用户的信息。
每隔一段时间去检查一下。 如果超过多久的 都把这个用户进行删除。
然后每次用户请求一次 就更新appliction 的最后访问时间。这样就不去管 当前用户是否已经离开了。
那是否需要在每张页面进行 写更新语句呢?其实不用的,有专门的接口的方法 ,通道,httpmodule任何请求都会通过这里。在这里写一个更新操作即可。
我现在也在做一个精确的现在系统。如果是.net的 我实在不想说能做到多少精确。因为你无法判断当前用户是否已经退出了。Seesion是不靠谱的。于是 我做了一个事件。每当用户请求 我就更新他的操作时间,杯具发生的时候 是在 他录入一个很大的表单的时候,整整话了10分钟,那么我必须把超时间隔设置在10分钟左右,那么 得到结果不准确率为10分钟。
那到底有没有办法解决呢?一定有,但是.net我也感觉到无力了。除了上面的每次请求更新最新信息之外,只有采用类似WEB聊天的程序设计方法。通过那种方法,定时向客户端发送消息。例如1秒一次(采用服务推送 效率比较高),然后定时往服务器返回数据,我们把时间间隔设置在10S左右,那样 一旦用户掉线,就不会有回发事件,就是服务器端接收不到当前用户,那么判定用户失效,处理之。
总结:.net我是无能为力了。只能采用那种 用户没请求一次 就更新一下 那张表。具体的方法 可以在全局变量的Application_BeginRequest或则Application_AuthenticateRequest2个方法中 填写代码,这些方法 是所有用户请求页面必须要经过的代码段。
这样用户长时间没有请求,就判定掉线。问题是。。。如果遇到需要输入一个大型表单的话,这比较麻烦来着。
每隔一段时间去检查一下。 如果超过多久的 都把这个用户进行删除。
然后每次用户请求一次 就更新appliction 的最后访问时间。这样就不去管 当前用户是否已经离开了。
那是否需要在每张页面进行 写更新语句呢?其实不用的,有专门的接口的方法 ,通道,httpmodule任何请求都会通过这里。在这里写一个更新操作即可。
我现在也在做一个精确的现在系统。如果是.net的 我实在不想说能做到多少精确。因为你无法判断当前用户是否已经退出了。Seesion是不靠谱的。于是 我做了一个事件。每当用户请求 我就更新他的操作时间,杯具发生的时候 是在 他录入一个很大的表单的时候,整整话了10分钟,那么我必须把超时间隔设置在10分钟左右,那么 得到结果不准确率为10分钟。
那到底有没有办法解决呢?一定有,但是.net我也感觉到无力了。除了上面的每次请求更新最新信息之外,只有采用类似WEB聊天的程序设计方法。通过那种方法,定时向客户端发送消息。例如1秒一次(采用服务推送 效率比较高),然后定时往服务器返回数据,我们把时间间隔设置在10S左右,那样 一旦用户掉线,就不会有回发事件,就是服务器端接收不到当前用户,那么判定用户失效,处理之。
总结:.net我是无能为力了。只能采用那种 用户没请求一次 就更新一下 那张表。具体的方法 可以在全局变量的Application_BeginRequest或则Application_AuthenticateRequest2个方法中 填写代码,这些方法 是所有用户请求页面必须要经过的代码段。
这样用户长时间没有请求,就判定掉线。问题是。。。如果遇到需要输入一个大型表单的话,这比较麻烦来着。
展开全部
为什么不用Session,设置超时,生命周期。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.用session和cookie(设置寿命)
2.写代码检测用户动作(长时间没动作去掉)
3.检测网络连接状况(这个貌似麻烦)
2.写代码检测用户动作(长时间没动作去掉)
3.检测网络连接状况(这个貌似麻烦)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是windows系统加C#语言就没这么麻烦,直接判断当前安装的程序
下面的这个哈西表保存了当前安装的程序
Hashtable programs = new Hashtable();
private void steupList()
{
try
{
int i = 0;
Microsoft.Win32.RegistryKey lmKey, uninstallKey, programKey;
lmKey = Microsoft.Win32.Registry.LocalMachine;
uninstallKey = lmKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall");
string[] programKeys = uninstallKey.GetSubKeyNames();
foreach (string keyName in programKeys)
{
i++;
programKey = uninstallKey.OpenSubKey(keyName);
if (programKey.GetValue("DisplayName") == null)
continue;
string one = programKey.GetValue("DisplayName").ToString();
programs.Add(i.ToString(), one);
programKey.Close();
}
uninstallKey.Close();
lmKey.Close();
}
catch (Exception e)
{
//MessageBox.Show(e.Message);
}
}
如果安装了就用process类执行这个进程,没有安装就用process类调用这个的安装程序就可
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
下面的这个哈西表保存了当前安装的程序
Hashtable programs = new Hashtable();
private void steupList()
{
try
{
int i = 0;
Microsoft.Win32.RegistryKey lmKey, uninstallKey, programKey;
lmKey = Microsoft.Win32.Registry.LocalMachine;
uninstallKey = lmKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall");
string[] programKeys = uninstallKey.GetSubKeyNames();
foreach (string keyName in programKeys)
{
i++;
programKey = uninstallKey.OpenSubKey(keyName);
if (programKey.GetValue("DisplayName") == null)
continue;
string one = programKey.GetValue("DisplayName").ToString();
programs.Add(i.ToString(), one);
programKey.Close();
}
uninstallKey.Close();
lmKey.Close();
}
catch (Exception e)
{
//MessageBox.Show(e.Message);
}
}
如果安装了就用process类执行这个进程,没有安装就用process类调用这个的安装程序就可
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询