asp.net 制作网站的点击率

想为我现在开发的网站加入统计点击率功能。我想把点击率保存在数据库中,但又不想在每个页面上都去调用更新点击率的方法,因为我们开发的网站比较大,那样很麻烦。我想可不可以放在全... 想为我现在开发的网站加入统计点击率功能。
我想把点击率保存在数据库中,但又不想在每个页面上都去调用更新点击率的方法,因为我们开发的网站比较大,那样很麻烦。
我想可不可以放在全局应用程序(Global.asax)里,如果可以的话,麻烦说一下写在什么事件,最好能写一下方法体啦。
如果不行,其它有没有什么办法.
跟据IP算,1IP一天只算一次点击。
51.la我也知道,但我要把点击数显示在页面上:您是第xx位访客。
没办法,上面要求这样做
展开
 我来答
猪猪雨巷
2010-10-17 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:96
采纳率:0%
帮助的人:89.2万
展开全部
Global.asax
<%@ Application Language="C#" %>

<script runat="server">

void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
//应用程序开始时把这个数读出来
int count = 0;
System.IO.StreamReader srd;
string path = Server.MapPath("~/Stat/counter.txt");
srd = System.IO.File.OpenText(path);
while (srd.Peek() != -1)
{
string str = srd.ReadLine();
if (str == "")
{
count = 0;
}
else
{
count = Convert.ToInt32(str);
}
}
srd.Close();
object obj = count;
Application["counter"] = obj;

//设置当前在线人数
Application["currentOnline"] = 0;

}

void Application_End(object sender, EventArgs e)
{
//在应用程序关闭时运行的代码

}

void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
//异常日志管理
Exception ep = Server.GetLastError().GetBaseException();
string excepMessage = "Error in: " + Request.Url.ToString() + ". Error Message:" + ep.Message.ToString();
ExceptionLog.SaveExceptionLog(excepMessage);

}

void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
//会话开始,访问量的数目+1,并写进去
Application.Lock();
int start = 0;
start = (int)Application["counter"];
start += 1;
object obj = start;
Application["counter"] = obj;

string path = Server.MapPath("~/Stat/counter.txt");
//false属相设置不追加文本内容
System.IO.StreamWriter sw = new System.IO.StreamWriter(path, false);
sw.WriteLine(start);
sw.Close();

//设置当前在线人数
Application["currentOnline"] = ((int)Application["currentOnline"]) + 1;

Application.UnLock();

}

void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。

Application.Lock();
//设置当前在线人数
Application["currentOnline"] = ((int)Application["currentOnline"]) - 1;
Application.UnLock();

}

</script>

按照上面方式在写个点击率,ok,祝您好运!
五千个字节
2010-10-12 · TA获得超过205个赞
知道小有建树答主
回答量:407
采纳率:0%
帮助的人:235万
展开全部
如果根据IP来算,也就是如果不登陆也算点击了,这样的话,你可以创建一个自定义的用户控件,然后托在每个页面的尾部,自定义控件只写后台代码,所以对于用户是不可见得,自定义控件后台代码这样写,
首先读取客户端IP
检索IP存在吗??不存在插进数据库 IP time(当时时间) 次数(1) 三个字段,如果ip存在并且不是当天,次数+1,时间也更新改为当时时间 如果IP存在是当天 不执行任何语句
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LifeRushing
2010-10-12 · TA获得超过786个赞
知道小有建树答主
回答量:861
采纳率:0%
帮助的人:509万
展开全部
1。用一个单独的aspx页面来记录譬如record.aspx;

2。在页脚加上<script src="record.aspx">这样的标记,那么你访问每个页面就自动回调用记录页面的程序。

如果你的网站比较大,那么就用httpmodule方式在每个页面输出是自动追加上面的标记,或者直接在httpmodule里面实现也行。如果不会使用httpmodule可以在网上查查资料,很简单的。httpmodule控制整个页面执行管道

祝你好运!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tigerhunter83
2010-10-13 · TA获得超过164个赞
知道答主
回答量:53
采纳率:0%
帮助的人:47.5万
展开全部
其实只需要计算登录页面的记录即可。在登录页面的pageload函数里写下列代码。每次运行时查询数据库,看数据库里记录的当天登录IP里有没有当前IP,如果没有,就使访问数加1.访问数可以存储在数据库里。
如果不是从导航页面开始访问的,要记录访问那就需要用global.asax。写在void Session_Start(object sender, EventArgs e)
{

}里。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
diaohengming
2010-10-12 · TA获得超过226个赞
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:273万
展开全部
//每个用户登陆进来会执行Global.asax中的Session_Start
void Session_Start(object sender, EventArgs e)
{

}
点击率实现解决方案:
1、数据库记录,IP和时间过滤。(如果访问量大,效率低)
2、将当天访问IP记录在对象或者缓存中,直接比较对象或者缓存,不存在则缓存或对象中增加一条,同时写入记录数据库。 这种方式需要考虑每天数据的重置。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式