asp.net 单用户登录经典解决方案
这里指的单点,泛指在WEB服务端,一个账户同一时刻只能存在一个票据!
大家开发中可能都碰到的一个问题,怎么使同一个用户,在同一时间内只允许登录一次。
很多人都会想到在数据库中用一个标识字段,登录进去置1,退出置0,登录时判断这个字段,如果是1就说明此用户在线,不允许登录,这个方案看似有效,但在实际使用中发现问题很多,比如,用户不是通过程序中的退出按纽退出,而是直接关闭IE,这样的话,下次登录时数据库里此用户还在线呢,这个用户就无法登录,当然也有一些办法可以解决这个问题:增加一个定时作业,定期复位那些长时间在线的用户,这样又会造成一些问题,如果这个用户实际上就是使用了这么长时间,那就是误杀。
通过多次实验,发现.net本身可以提供这种解决方案。步骤如下:
第一:建立global.asax文件, Session_End 事件中写入如下代码:
Hashtable h = (Hashtable)Application["online"];
if (h[Session.SessionID] != null)
h.Remove(Session.SessionID);
Application["online"] = h;
第二:修改web.config文件,在system.web 结点里面增加
<sessionState mode="InProc"></sessionState>
这个是为了使用global.asax中的session_end事件生效。
第三:页面的登录事件中,判断登录用户是否在服务端全局变量中存在,存在就不允许登录,不存在就创建。以下是实现过程,登录按纽的事件中调用。
private void isLogin()
{
Hashtable h = (Hashtable)Application["online"];
if (h == null)
{
h = new Hashtable();
}
//验证用户是否在Application中存在(是否在线)
&n
相关文档:
1. 跟以前一样做界面,只是注意,把所有需要有多语言界面的文字都用label来做
2. 做完以后,在Solution Explorer里选中这个文件,选Tools->Generate Local Resource
3. 你会发现生成了一个目录,App_LocalResources;这个目录里多了一个resx的文件。比如你的aspx文件是default.aspx,它就会生成一个叫做defa ......
导入EXCEL一般有3种方法
1.通过Excel APIl来导入(缺点,需要安装OFFICE组件,建立对象后,不容易释放,大数据量时读取速度较低)
2.通过OLEDB数据源方式读取
3.通过第三方组件来导入(推荐使用ExcelLibrary)下载地址:http://code.google.com/p/excellibrary/
同样导出EXCEL也有3种方法,和导入类似。
推荐使用第3种 ......
TreeView 控件的呈现是可完全自定义的,这使得可以使用多种多样的显示样式。
若要自定义 TreeView 控件的外观,可以执行以下操作:
·指定影响控件显示和呈现的 TreeView 控件属性。
·指定一个 ImageSet 属性,该属性选择一组在运行时同控件一起呈现的内置图像。
·指定用于控制 T ......
public void DataTable2Excel(string attachName, DataTable tab)
{
string file = HttpContext.Current.Server.MapPath("/uploads/export/" + Guid.NewGuid().ToString() + ".xls");
&nbs ......