如何能知道某个用户现在在不在线呢??

lxy_lxy 2008-12-09 08:06:45
就是我在一个搜索的页面,我想将所有搜索到的用户当前在不在线给显示出来,有什么好的办法吗??
...全文
196 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxy_lxy 2008-12-14
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 sp1234 的回复:]
回复这个简单问题不下十次了,这次卖个关子,不回复具体做法了。只是我要提供一个“破除迷雾”的测试方法,这个测试可以保证你的编程基本正确:

你访问你的网站,然后再访问其它网站,例如新闻网站,当你转向其它网站1分中左右,从其它的浏览器进程中你就应该看到你已经下线了。而不是等待20分钟,更不是要求你关闭窗口才显示下线。
[/Quote]

看不明白~~~~~```你的意思到底有没有办法解决呢```如果有```那么请说的明白些````??
mengxj85 2008-12-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 huangshihu1 的回复:]
登录的时候

C# code if (Application["Users"] == null)
{
ht.Add(Convert.ToInt32(sdr["UserId"]), users);
Application.Lock();
Application["Users"] = ht;
Application.UnLock();
}
else
{
ht = Application["Users"] as Hashtable;
ArrayL…
[/Quote]
niitnanfeng 2008-12-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yoursWTR 的回复:]
我一直觉在B/S来实现用户在线判断完全就是多余,又无法达到一个非常准确的定位和判断,又没啥意义,还浪费资源和时间,

我都不知道那个蠢货第一个想出这种需求的
[/Quote]
顶。
  • 打赏
  • 举报
回复
回复这个简单问题不下十次了,这次卖个关子,不回复具体做法了。只是我要提供一个“破除迷雾”的测试方法,这个测试可以保证你的编程基本正确:

你访问你的网站,然后再访问其它网站,例如新闻网站,当你转向其它网站1分中左右,从其它的浏览器进程中你就应该看到你已经下线了。而不是等待20分钟,更不是要求你关闭窗口才显示下线。
lxy_lxy 2008-12-12
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 igelf 的回复:]
http://www.cnblogs.com/coolylh/archive/2005/11/23/282927.aspx
ASP.NET在线用户列表 关闭浏览器 精确统计
[/Quote]
有点复杂`````难道就真的没有这个功能吗???
有没有获得所以服务器缓存中的指定 session 变量的值的功能
(比如可不可以获得服务器缓存中所有 Session["UserName"] 变量和值的集合)
igelf 2008-12-10
  • 打赏
  • 举报
回复
http://www.cnblogs.com/coolylh/archive/2005/11/23/282927.aspx
ASP.NET在线用户列表 关闭浏览器 精确统计
gzMysky 2008-12-10
  • 打赏
  • 举报
回复
如果用户直接关掉浏览器这种情况不好搞
supremeholy 2008-12-10
  • 打赏
  • 举报
回复
楼上的看着有些晕,
public class OnlineManage
{
private static OnlineManage _instance = new OnlineManage();
//private Dictionary<int, OnlineUserInfo> _onlineUserList = new Dictionary<int, OnlineUserInfo>();
private Dictionary<string, OnlineUserInfo> _onlineSession = new Dictionary<string, OnlineUserInfo>();

public const int Timeout_Minutes = 20; //非登录会员在线用户过期时间
public const int Timeout_Minutes_Member = 40; //登录会员在线过期时间

private OnlineManage()
{
}

public void Clear()
{
lock(this)
{
//_onlineUserList.Clear();
_onlineSession.Clear();
}
}

/// <summary>
/// 获取当前在线用户总数(包含登录和未登录的)
/// </summary>
public int Count
{
get { return _onlineSession.Count; }
}

/// <summary>
/// 在线会员数
/// </summary>
public int MemberCount
{
get
{
int iRet = 0;
lock(this)
{
foreach (string _sKey in _onlineSession.Keys)
{
OnlineUserInfo oInfo = _onlineSession[_sKey];
if (oInfo == null)
{
_onlineSession.Remove(_sKey);
}
else
{
if (oInfo.UserID>0)
{
iRet++;
}
}
}
}
return iRet;
}
}

public OnlineUserInfo this[int UserID]
{
get
{
lock(this)
{
foreach (string _sKey in _onlineSession.Keys)
{
OnlineUserInfo oInfo = _onlineSession[_sKey];
if (oInfo == null)
{
_onlineSession.Remove(_sKey);
}
else
{
if (oInfo.UserID == UserID)
{
return oInfo;
}
}
}
return null;
}
}
}

public OnlineUserInfo this[string sSessionID]
{
get
{
if (_onlineSession.ContainsKey(sSessionID))
return _onlineSession[sSessionID];
else
return null;
}
}

/// <summary>
/// 获取所有当前在线用户的ID数组
/// </summary>
public int[] OnlineUserIDs
{
get
{
lock(this)
{
List<int> ids = new List<int>();
foreach(string _sKey in _onlineSession.Keys)
{
OnlineUserInfo oInfo = this[_sKey];
if(oInfo!=null && oInfo.UserID>0)
{
ids.Add(oInfo.UserID);
}
}
return ids.ToArray();
}
}
}

/// <summary>
/// 用户有活动,存在异常情况:
/// 1. Session未结束,但是换了用户登录
/// </summary>
/// <param name="UserID"></param>
public void UserActived(string sSessionID,int iUserID)
{
lock (this)
{
OnlineUserInfo oInfo = this[sSessionID];
if (oInfo == null)
{
oInfo = new OnlineUserInfo(sSessionID, iUserID);
_onlineSession.Add(sSessionID, oInfo);
}
else
{
if(oInfo.UserID != iUserID) //考虑同一个页面先后用别的帐号登录
{
oInfo.UserID = iUserID;
oInfo.LoginTime = DateTime.Now;
}
oInfo.LastActiveTime = DateTime.Now;
}
}
}

/// <summary>
/// 用户离开(未活动时间超时或者用户注销了)
/// </summary>
/// <param name="UserID"></param>
public void UserLeaved(string sSessionID,int iUserID)
{
lock(this)
{
_onlineSession.Remove(sSessionID);
}
}

/// <summary>
/// 用户离开(未活动时间超时或者用户注销了)
/// </summary>
/// <param name="sSessionID"></param>
public void UserLeaved(string sSessionID)
{
lock (this)
{
_onlineSession.Remove(sSessionID);
}
}


/// <summary>
/// 检查在线用户状态,如果发现有超时未活动的用户,将其删除
/// </summary>
public void CheckOnlineUsers()
{
lock(this)
{
//1.先查询出需要删除的Key列表
List<string> _removeKeys = new List<string>();
foreach (KeyValuePair<string, OnlineUserInfo> kvp in _onlineSession)
{
OnlineUserInfo oInfo = kvp.Value;
string _sKey = kvp.Key;
if(oInfo == null)
{
_removeKeys.Add(_sKey);
}
else
{
if(oInfo.UserID>0) //登录会员
{
if (oInfo.NoActiveMinutes > Timeout_Minutes_Member)
{
_removeKeys.Add(_sKey);
}
}
else //未登录会员
{
if (oInfo.NoActiveMinutes > Timeout_Minutes)
{
_removeKeys.Add(_sKey);
}
}
}
}

//2.从容器中删除这些Key
foreach (string _key in _removeKeys)
{
_onlineSession.Remove(_key);
}
_removeKeys.Clear();
}
}

/// <summary>
/// 获取唯一实例
/// </summary>
/// <returns></returns>
public static OnlineManage GetInstance()
{
return _instance;
}
}

/// <summary>
/// 在线用户信息类
/// </summary>
public class OnlineUserInfo
{
public int UserID;
public string SessionID;
public DateTime LoginTime;
public DateTime LastActiveTime;

/// <summary>
/// 构造函数,用于用户新登录时创建用户在线条目
/// </summary>
/// <param name="iUserID">活动的用户ID</param>
/// <param name="dtLoginTime">用户活动时间</param>
public OnlineUserInfo(int iUserID,DateTime dtLoginTime)
{
UserID = iUserID;
SessionID = "";
LoginTime = dtLoginTime;
LastActiveTime = dtLoginTime;
}

/// <summary>
/// 构造函数,用于用户新登录时创建用户在线条目
/// </summary>
/// <param name="iUserID">活动的用户ID</param>
/// <param name="dtLoginTime">用户活动时间</param>
public OnlineUserInfo(string sSessionID, int iUserID)
{
UserID = iUserID;
LoginTime = DateTime.Now;
LastActiveTime = DateTime.Now;
SessionID = sSessionID;
}

/// <summary>
/// 用户初次进来并创建了新Session
/// </summary>
/// <param name="sSessionID"></param>
public OnlineUserInfo(string sSessionID)
{
UserID = 0;
LoginTime = DateTime.Now;
LastActiveTime = DateTime.Now;
SessionID = sSessionID;
}

/// <summary>
/// 获取该用户的未活动时长(分钟数)
/// </summary>
public int NoActiveMinutes
{
get
{
TimeSpan dtSpan = DateTime.Now.Subtract(LastActiveTime);
return (int)dtSpan.TotalMinutes;
}
}

/// <summary>
/// 获取该用户的在线时长(分钟数)
/// </summary>
public int OnlineMinutes
{
get
{
TimeSpan dtSpan = DateTime.Now.Subtract(LoginTime);
return (int)dtSpan.TotalMinutes;
}
}
}
lxy_lxy 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jiang_jiajia10 的回复:]
引用 4 楼 oec2003 的回复:
不好意思  上面发错了
http://www.cnblogs.com/gaozhong98/archive/2008/10/31/1323849.html

挺好值得看
[/Quote]

就是这个网址 ,我看了挺好(看着挺好)···可是我不知道怎么用啊····请各位帮帮忙··??
lxy_lxy 2008-12-10
  • 打赏
  • 举报
回复
实现用户是否在线代码

public class OnlineManage{ private static OnlineManage _instance = new OnlineManage(); //private Dictionary<int, OnlineUserInfo> _onlineUserList = new Dictionary<int, OnlineUserInfo>(); private Dictionary<string, OnlineUserInfo> _onlineSession = new Dictionary<string, OnlineUserInfo>(); public const int Timeout_Minutes = 20; //非登录会员在线用户过期时间 public const int Timeout_Minutes_Member = 40; //登录会员在线过期时间 private OnlineManage() { } public void Clear() { lock(this) { //_onlineUserList.Clear(); _onlineSession.Clear(); } } /// <summary> /// 获取当前在线用户总数(包含登录和未登录的) /// </summary> public int Count { get { return _onlineSession.Count; } } /// <summary> /// 在线会员数 /// </summary> public int MemberCount { get { int iRet = 0; lock(this) { foreach (string _sKey in _onlineSession.Keys) { OnlineUserInfo oInfo = _onlineSession[_sKey]; if (oInfo == null) { _onlineSession.Remove(_sKey); } else { if (oInfo.UserID>0) { iRet++; } } } } return iRet; } } public OnlineUserInfo this[int UserID] { get { lock(this) { foreach (string _sKey in _onlineSession.Keys) { OnlineUserInfo oInfo = _onlineSession[_sKey]; if (oInfo == null) { _onlineSession.Remove(_sKey); } else { if (oInfo.UserID == UserID) { return oInfo; } } } return null; } } } public OnlineUserInfo this[string sSessionID] { get { if (_onlineSession.ContainsKey(sSessionID)) return _onlineSession[sSessionID]; else return null; } } /// <summary> /// 获取所有当前在线用户的ID数组 /// </summary> public int[] OnlineUserIDs { get { lock(this) { List<int> ids = new List<int>(); foreach(string _sKey in _onlineSession.Keys) { OnlineUserInfo oInfo = this[_sKey]; if(oInfo!=null && oInfo.UserID>0) { ids.Add(oInfo.UserID); } } return ids.ToArray(); } } } /// <summary> /// 用户有活动,存在异常情况: /// 1. Session未结束,但是换了用户登录 /// </summary> /// <param name="UserID"></param> public void UserActived(string sSessionID,int iUserID) { lock (this) { OnlineUserInfo oInfo = this[sSessionID]; if (oInfo == null) { oInfo = new OnlineUserInfo(sSessionID, iUserID); _onlineSession.Add(sSessionID, oInfo); } else { if(oInfo.UserID != iUserID) //考虑同一个页面先后用别的帐号登录 { oInfo.UserID = iUserID; oInfo.LoginTime = DateTime.Now; } oInfo.LastActiveTime = DateTime.Now; } } } /// <summary> /// 用户离开(未活动时间超时或者用户注销了) /// </summary> /// <param name="UserID"></param> public void UserLeaved(string sSessionID,int iUserID) { lock(this) { _onlineSession.Remove(sSessionID); } } /// <summary> /// 用户离开(未活动时间超时或者用户注销了) /// </summary> /// <param name="sSessionID"></param> public void UserLeaved(string sSessionID) { lock (this) { _onlineSession.Remove(sSessionID); } } /// <summary> /// 检查在线用户状态,如果发现有超时未活动的用户,将其删除 /// </summary> public void CheckOnlineUsers() { lock(this) { //1.先查询出需要删除的Key列表 List<string> _removeKeys = new List<string>(); foreach (KeyValuePair<string, OnlineUserInfo> kvp in _onlineSession) { OnlineUserInfo oInfo = kvp.Value; string _sKey = kvp.Key; if(oInfo == null) { _removeKeys.Add(_sKey); } else { if(oInfo.UserID>0) //登录会员 { if (oInfo.NoActiveMinutes > Timeout_Minutes_Member) { _removeKeys.Add(_sKey); } } else //未登录会员 { if (oInfo.NoActiveMinutes > Timeout_Minutes) { _removeKeys.Add(_sKey); } } } } //2.从容器中删除这些Key foreach (string _key in _removeKeys) { _onlineSession.Remove(_key); } _removeKeys.Clear(); } } /// <summary> /// 获取唯一实例 /// </summary> /// <returns></returns> public static OnlineManage GetInstance() { return _instance; }}/// <summary>/// 在线用户信息类/// </summary>public class OnlineUserInfo{ public int UserID; public string SessionID; public DateTime LoginTime; public DateTime LastActiveTime; /// <summary> /// 构造函数,用于用户新登录时创建用户在线条目 /// </summary> /// <param name="iUserID">活动的用户ID</param> /// <param name="dtLoginTime">用户活动时间</param> public OnlineUserInfo(int iUserID,DateTime dtLoginTime) { UserID = iUserID; SessionID = ""; LoginTime = dtLoginTime; LastActiveTime = dtLoginTime; } /// <summary> /// 构造函数,用于用户新登录时创建用户在线条目 /// </summary> /// <param name="iUserID">活动的用户ID</param> /// <param name="dtLoginTime">用户活动时间</param> public OnlineUserInfo(string sSessionID, int iUserID) { UserID = iUserID; LoginTime = DateTime.Now; LastActiveTime = DateTime.Now; SessionID = sSessionID; } /// <summary> /// 用户初次进来并创建了新Session /// </summary> /// <param name="sSessionID"></param> public OnlineUserInfo(string sSessionID) { UserID = 0; LoginTime = DateTime.Now; LastActiveTime = DateTime.Now; SessionID = sSessionID; } /// <summary> /// 获取该用户的未活动时长(分钟数) /// </summary> public int NoActiveMinutes { get { TimeSpan dtSpan = DateTime.Now.Subtract(LastActiveTime); return (int)dtSpan.TotalMinutes; } } /// <summary> /// 获取该用户的在线时长(分钟数) /// </summary> public int OnlineMinutes { get { TimeSpan dtSpan = DateTime.Now.Subtract(LoginTime); return (int)dtSpan.TotalMinutes; } }}
lxy_lxy 2008-12-10
  • 打赏
  • 举报
回复
实现用户是否在线代码 

public class OnlineManage{ private static OnlineManage _instance = new OnlineManage(); //private Dictionary<int, OnlineUserInfo> _onlineUserList = new Dictionary<int, OnlineUserInfo>(); private Dictionary<string, OnlineUserInfo> _onlineSession = new Dictionary<string, OnlineUserInfo>(); public const int Timeout_Minutes = 20; //非登录会员在线用户过期时间 public const int Timeout_Minutes_Member = 40; //登录会员在线过期时间 private OnlineManage() { } public void Clear() { lock(this) { //_onlineUserList.Clear(); _onlineSession.Clear(); } } /// <summary> /// 获取当前在线用户总数(包含登录和未登录的) /// </summary> public int Count { get { return _onlineSession.Count; } } /// <summary> /// 在线会员数 /// </summary> public int MemberCount { get { int iRet = 0; lock(this) { foreach (string _sKey in _onlineSession.Keys) { OnlineUserInfo oInfo = _onlineSession[_sKey]; if (oInfo == null) { _onlineSession.Remove(_sKey); } else { if (oInfo.UserID>0) { iRet++; } } } } return iRet; } } public OnlineUserInfo this[int UserID] { get { lock(this) { foreach (string _sKey in _onlineSession.Keys) { OnlineUserInfo oInfo = _onlineSession[_sKey]; if (oInfo == null) { _onlineSession.Remove(_sKey); } else { if (oInfo.UserID == UserID) { return oInfo; } } } return null; } } } public OnlineUserInfo this[string sSessionID] { get { if (_onlineSession.ContainsKey(sSessionID)) return _onlineSession[sSessionID]; else return null; } } /// <summary> /// 获取所有当前在线用户的ID数组 /// </summary> public int[] OnlineUserIDs { get { lock(this) { List<int> ids = new List<int>(); foreach(string _sKey in _onlineSession.Keys) { OnlineUserInfo oInfo = this[_sKey]; if(oInfo!=null && oInfo.UserID>0) { ids.Add(oInfo.UserID); } } return ids.ToArray(); } } } /// <summary> /// 用户有活动,存在异常情况: /// 1. Session未结束,但是换了用户登录 /// </summary> /// <param name="UserID"></param> public void UserActived(string sSessionID,int iUserID) { lock (this) { OnlineUserInfo oInfo = this[sSessionID]; if (oInfo == null) { oInfo = new OnlineUserInfo(sSessionID, iUserID); _onlineSession.Add(sSessionID, oInfo); } else { if(oInfo.UserID != iUserID) //考虑同一个页面先后用别的帐号登录 { oInfo.UserID = iUserID; oInfo.LoginTime = DateTime.Now; } oInfo.LastActiveTime = DateTime.Now; } } } /// <summary> /// 用户离开(未活动时间超时或者用户注销了) /// </summary> /// <param name="UserID"></param> public void UserLeaved(string sSessionID,int iUserID) { lock(this) { _onlineSession.Remove(sSessionID); } } /// <summary> /// 用户离开(未活动时间超时或者用户注销了) /// </summary> /// <param name="sSessionID"></param> public void UserLeaved(string sSessionID) { lock (this) { _onlineSession.Remove(sSessionID); } } /// <summary> /// 检查在线用户状态,如果发现有超时未活动的用户,将其删除 /// </summary> public void CheckOnlineUsers() { lock(this) { //1.先查询出需要删除的Key列表 List<string> _removeKeys = new List<string>(); foreach (KeyValuePair<string, OnlineUserInfo> kvp in _onlineSession) { OnlineUserInfo oInfo = kvp.Value; string _sKey = kvp.Key; if(oInfo == null) { _removeKeys.Add(_sKey); } else { if(oInfo.UserID>0) //登录会员 { if (oInfo.NoActiveMinutes > Timeout_Minutes_Member) { _removeKeys.Add(_sKey); } } else //未登录会员 { if (oInfo.NoActiveMinutes > Timeout_Minutes) { _removeKeys.Add(_sKey); } } } } //2.从容器中删除这些Key foreach (string _key in _removeKeys) { _onlineSession.Remove(_key); } _removeKeys.Clear(); } } /// <summary> /// 获取唯一实例 /// </summary> /// <returns></returns> public static OnlineManage GetInstance() { return _instance; }}/// <summary>/// 在线用户信息类/// </summary>public class OnlineUserInfo{ public int UserID; public string SessionID; public DateTime LoginTime; public DateTime LastActiveTime; /// <summary> /// 构造函数,用于用户新登录时创建用户在线条目 /// </summary> /// <param name="iUserID">活动的用户ID</param> /// <param name="dtLoginTime">用户活动时间</param> public OnlineUserInfo(int iUserID,DateTime dtLoginTime) { UserID = iUserID; SessionID = ""; LoginTime = dtLoginTime; LastActiveTime = dtLoginTime; } /// <summary> /// 构造函数,用于用户新登录时创建用户在线条目 /// </summary> /// <param name="iUserID">活动的用户ID</param> /// <param name="dtLoginTime">用户活动时间</param> public OnlineUserInfo(string sSessionID, int iUserID) { UserID = iUserID; LoginTime = DateTime.Now; LastActiveTime = DateTime.Now; SessionID = sSessionID; } /// <summary> /// 用户初次进来并创建了新Session /// </summary> /// <param name="sSessionID"></param> public OnlineUserInfo(string sSessionID) { UserID = 0; LoginTime = DateTime.Now; LastActiveTime = DateTime.Now; SessionID = sSessionID; } /// <summary> /// 获取该用户的未活动时长(分钟数) /// </summary> public int NoActiveMinutes { get { TimeSpan dtSpan = DateTime.Now.Subtract(LastActiveTime); return (int)dtSpan.TotalMinutes; } } /// <summary> /// 获取该用户的在线时长(分钟数) /// </summary> public int OnlineMinutes { get { TimeSpan dtSpan = DateTime.Now.Subtract(LoginTime); return (int)dtSpan.TotalMinutes; } }}
liye9801 2008-12-10
  • 打赏
  • 举报
回复

设置一个在线超时时间,用户只要进行操作,都去更新用户对应的最后活动时间,然后系统每次取在线用户时,或后台定时对超时用户进行清理..
「已注销」 2008-12-10
  • 打赏
  • 举报
回复
mark
lxy_lxy 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jiang_jiajia10 的回复:]
引用 4 楼 oec2003 的回复:
不好意思  上面发错了
http://www.cnblogs.com/gaozhong98/archive/2008/10/31/1323849.html

挺好值得看
[/Quote]

我也看了···可是怎么用呢···??其实我觉得,如果再用户登录的时候,用 Application 记录也好,用 数据库记录也好,都可以,可是,如果用户是非正常退出的,或直接关掉电源的,或掉线的,这样我们就没法获得他推出的事件,就没有办法去删除Application 的记录,或数据库记录,怎么办呢···有什么好办法吗··??
yoursWTR 2008-12-09
  • 打赏
  • 举报
回复
我一直觉在B/S来实现用户在线判断完全就是多余,又无法达到一个非常准确的定位和判断,又没啥意义,还浪费资源和时间,

我都不知道那个蠢货第一个想出这种需求的
wuyq11 2008-12-09
  • 打赏
  • 举报
回复

参考
http://www.cnblogs.com/kokoliu/archive/2007/01/11/618144.html
http://www.cnblogs.com/mrcooldog/archive/2008/09/18/936211.html
http://www.cnblogs.com/dagon007/articles/114724.html
http://www.cnblogs.com/cncxz/archive/2008/11/25/949255.html
Bodil 2008-12-09
  • 打赏
  • 举报
回复
看看这个
[Quote=引用 4 楼 oec2003 的回复:]
http://www.cnblogs.com/gaozhong98/archive/2008/10/31/1323849.html
[/Quote]
要不数据库中放张表存放在线用户
claymore1114 2008-12-09
  • 打赏
  • 举报
回复
可以很多方法 像MemberShip 类 、session。
也可建个临时表 来存储在线用户,可用过数据库等
Robin 2008-12-09
  • 打赏
  • 举报
回复
登录的时候
            if (Application["Users"] == null)
{
ht.Add(Convert.ToInt32(sdr["UserId"]), users);
Application.Lock();
Application["Users"] = ht;
Application.UnLock();
}
else
{
ht = Application["Users"] as Hashtable;
ArrayList a = new ArrayList();

if (ht[Convert.ToInt32(sdr["UserId"])] == null)
{
ht.Add(Convert.ToInt32(sdr["UserId"]), users);
Application.Lock();
Application["Users"] = ht;
Application.UnLock();
}
}


        if (UserId > 0)
{
if (Application["Users"] != null)
{
ht = Application["Users"] as Hashtable;

ht.Remove(UserId);

Application.Lock();
Application["Users"] = ht;
Application.UnLock();
}
}
jiang_jiajia10 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 oec2003 的回复:]
不好意思 上面发错了
http://www.cnblogs.com/gaozhong98/archive/2008/10/31/1323849.html
[/Quote]
挺好值得看
加载更多回复(4)

62,268

社区成员

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

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

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

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