sharepoint form认证下的当前在线用户统计和当日浏览量的统计
2011-04-14 15:17
375 查看
sharepoint form认证下的当前在线用户统计和当日浏览量的统计
解决这个问题之前参考了很多asp.net的方案,但是试了之后一直没有达到我想要的效果,但是还是从中学习到了很多很多的东西。
所以先把这几篇文章给贴出来:
http://blog.csdn.net/zjybushiren88888/archive/2009/09/14/4550541.aspx
/article/5984801.html
http://blog.csdn.net/cncxz/archive/2005/07/18/427778.aspx
之后在国外的一个哥们的博客发现了两篇文章,感觉就是自己需要的,但是还是有偏差,不过总体思路还是我需要的。
地址是:http://bryantlikes.com/bryantlikes/articles/583.aspx
http://bryantlikes.com/articles/592.aspx
而我做的思路也是参考这个哥们的,但是这个哥们的代码只是针对sharepoint基本验证模式的。
众所周知,要完全精确计算当前站点的在线用户人数列表的开发度是比较大的,因此这次的方法也只是一个非精确的方案。
下面开始讲我的方案:
:
在sharepoint数据库下建一个数据库UserOnline:在该数据库里建立table:
查询代码如下:
create table [Hits]
(
Url varchar(256) NOT NULL,
UserID varchar(50) NOT NULL,
IP varchar(50) NOT NULL,
Timestamp datetime NOT NULL
)
go
create proc Hit_Add
(
@Url varchar(256),
@UserID varchar(50),
@IP varchar(50)
)
as
insert into Hits values
(@Url, @UserID, @IP,getdate())
go
然后在你的sharepoint站点下的global文件里插入如下代码:
代码
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Data.SqlClient;
using Microsoft.SharePoint.Utilities;
using Ultrapower.Portal.Business;
namespace Ultrapower.Portal.UserControls
{
public partial class UserOnLine : System.Web.UI.UserControl
{
private void dowithgrd(string keyword, string name)
{
BoundField sendTimeField = new BoundField();
sendTimeField.DataField = keyword;
sendTimeField.HeaderText = name;
GridOnline.Columns.Add(sendTimeField);
}
private DataSet ds = new DataSet();
private DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
UserOnlineCollection useronlineclt = new UserOnlineCollection();
string sqlcmd = "ActiveUsers_Get";
ds = useronlineclt.GetActiveUserTable(sqlcmd, CommandType.StoredProcedure);
GridOnline.Columns.Clear();
dowithgrd("Username", "名称");
dowithgrd("UserID", "登录名");
dowithgrd("IP", "登录IP");
dowithgrd("LastHit", "登录时间");
GridOnline.AutoGenerateColumns = false;
dt = ds.Tables[0];
dt.Columns.Add("Username");
for (int i = 0; i < dt.Rows.Count; i++)
{
string uid = dt.Rows[i]["UserID"].ToString();
SPWeb spst = SPContext.Current.Site.RootWeb;
try
{
SPUser user = spst.AllUsers["ln:" + uid];
string name = user.Name;
if (name != null)
{
dt.Rows[i]["Username"] = name.ToString();
}
else
{
dt.Rows[i]["Username"] = "用户";
}
}
catch
{
dt.Rows[i]["Username"] = "用户";
}
}
GridOnline.DataSource = ds.Tables[0];
GridOnline.DataBind();
}
protected void GridOnline_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridOnline.PageIndex = e.NewPageIndex;
GridOnline.DataSource = ds.Tables[0];
GridOnline.DataBind();
}
}
}
解决这个问题之前参考了很多asp.net的方案,但是试了之后一直没有达到我想要的效果,但是还是从中学习到了很多很多的东西。
所以先把这几篇文章给贴出来:
http://blog.csdn.net/zjybushiren88888/archive/2009/09/14/4550541.aspx
/article/5984801.html
http://blog.csdn.net/cncxz/archive/2005/07/18/427778.aspx
之后在国外的一个哥们的博客发现了两篇文章,感觉就是自己需要的,但是还是有偏差,不过总体思路还是我需要的。
地址是:http://bryantlikes.com/bryantlikes/articles/583.aspx
http://bryantlikes.com/articles/592.aspx
而我做的思路也是参考这个哥们的,但是这个哥们的代码只是针对sharepoint基本验证模式的。
众所周知,要完全精确计算当前站点的在线用户人数列表的开发度是比较大的,因此这次的方法也只是一个非精确的方案。
下面开始讲我的方案:
:
在sharepoint数据库下建一个数据库UserOnline:在该数据库里建立table:
查询代码如下:
create table [Hits]
(
Url varchar(256) NOT NULL,
UserID varchar(50) NOT NULL,
IP varchar(50) NOT NULL,
Timestamp datetime NOT NULL
)
go
create proc Hit_Add
(
@Url varchar(256),
@UserID varchar(50),
@IP varchar(50)
)
as
insert into Hits values
(@Url, @UserID, @IP,getdate())
go
然后在你的sharepoint站点下的global文件里插入如下代码:
代码
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Data.SqlClient;
using Microsoft.SharePoint.Utilities;
using Ultrapower.Portal.Business;
namespace Ultrapower.Portal.UserControls
{
public partial class UserOnLine : System.Web.UI.UserControl
{
private void dowithgrd(string keyword, string name)
{
BoundField sendTimeField = new BoundField();
sendTimeField.DataField = keyword;
sendTimeField.HeaderText = name;
GridOnline.Columns.Add(sendTimeField);
}
private DataSet ds = new DataSet();
private DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
UserOnlineCollection useronlineclt = new UserOnlineCollection();
string sqlcmd = "ActiveUsers_Get";
ds = useronlineclt.GetActiveUserTable(sqlcmd, CommandType.StoredProcedure);
GridOnline.Columns.Clear();
dowithgrd("Username", "名称");
dowithgrd("UserID", "登录名");
dowithgrd("IP", "登录IP");
dowithgrd("LastHit", "登录时间");
GridOnline.AutoGenerateColumns = false;
dt = ds.Tables[0];
dt.Columns.Add("Username");
for (int i = 0; i < dt.Rows.Count; i++)
{
string uid = dt.Rows[i]["UserID"].ToString();
SPWeb spst = SPContext.Current.Site.RootWeb;
try
{
SPUser user = spst.AllUsers["ln:" + uid];
string name = user.Name;
if (name != null)
{
dt.Rows[i]["Username"] = name.ToString();
}
else
{
dt.Rows[i]["Username"] = "用户";
}
}
catch
{
dt.Rows[i]["Username"] = "用户";
}
}
GridOnline.DataSource = ds.Tables[0];
GridOnline.DataBind();
}
protected void GridOnline_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridOnline.PageIndex = e.NewPageIndex;
GridOnline.DataSource = ds.Tables[0];
GridOnline.DataBind();
}
}
}
相关文章推荐
- (原创)sharepoint form认证下的当前在线用户统计和当日浏览量的统计
- 使用监听器统计当前的在线用户数
- PHP+Mysql+jQuery统计当前在线用户数
- sharepoint form认证下跨域访问其他基本认证的系统(客户端用js的xmlhttprequest)的方法
- 一步一步SharePoint 2007之十七:解决实现Form认证后无法再用SharePoint Designer编辑网站的问题
- 一个统计当前在线用户的解决方案
- 一步一步SharePoint 2007之二十二:完美解决实现Form认证后无法再用SharePoint Designer编辑网站的问题
- SharePoint server 2010全新的用户认证模式-Webcast-笔记
- 一个统计当前在线用户的解决方案,可以在聊天室、论坛、网站中使用
- redis 统计当前在线用户
- 一步一步SharePoint 2007之二十二:完美解决实现Form认证后无法再用SharePoint Designer编辑网站的问题
- PHP+Mysql+jQuery统计当前在线用户数
- PHP统计当前在线用户数实例讲解
- 一步一步SharePoint 2007之十七:解决实现Form认证后无法再用SharePoint Designer编辑网站的问题
- 统计在线用户列表 for .net WebForm
- 完美解决实现Form认证后无法再用SharePoint Designer编辑网站的问题
- SharePoint 2013 使用JQuery 一些记录如(SharePoint js 获得当前用户)等基本操作。
- sharepoint filter by current group(根据当前用户所在的用户组过滤)
- PHP+Mysql+jQuery统计当前在线用户数
- 统计在线用户列表 for .net WebForm