asp.net网站访问量

rr998 2010-04-20 10:55:34
想得到网站的访问次数,但思路不是很清楚,上网查了下,但结果我调试运行 打开新的ie复制地址 一会访问数量加1 一会又不加1 发布到iis后 仍然这样 而且数据没有保存到数据库 除非在“文件”里保存一下global文件才更新了数据库 郁闷,请大家帮帮忙,不胜感激!

我是这样做的:
1、建立一张表 用来保存访问次数 存在字段Number里面

2、建立Global文件 如下


<%@ Application Language="C#" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>
<script runat="server">

void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["TongJiConnectionString"].ConnectionString;
con.Open();
SqlCommand cmd = new SqlCommand("select * from tongji", con);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
//int count = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
Application["total"] = Convert.ToInt32(dt.Rows[0]["Number"].ToString());
Application["online"] = 0;


}

void Application_End(object sender, EventArgs e)
{
//在应用程序关闭时运行的代码
// 在应用程序关闭时运行的代码
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["TongJiConnectionString"].ConnectionString;
con.Open();
SqlCommand cmd = new SqlCommand("update tongji set Number=" + Application["total"].ToString(), con);
cmd.ExecuteNonQuery();
con.Close();
}

void Application_Error(object sender, EventArgs e)
{
//在出现未处理的错误时运行的代码

}

void Session_Start(object sender, EventArgs e)
{
//在新会话启动时运行的代
Application.Lock();
Application["total"] = (int)Application["total"] + 1;
Application["online"] = (int)Application["online"] + 1;
Application.UnLock();

}

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


}

</script>


3、页面调用 如下
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.Label1.Text = "总访问人数" + Application["total"].ToString();
this.Label2.Text = "当前在线数" + Application["online"].ToString();
}
}
...全文
746 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
yan267 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 rr998 的回复:]
引用 14 楼 yan267 的回复:
C# code


void Session_Start(object sender, EventArgs e)
{
//在新会话启动时运行的代
Application.Lock();
Application["total"] = (int)Application["total"] + 1;

Appli……


那这样会不会很慢呢……
[/Quote]

不会有多少差别的,放global 主要是Session事件而已。如果放页面,每次刷新就会加1了。Session就只有新开IE才加。这个看你需求了。如果你要准确的话,就是IP+页面双重统计了。


//string strIP = Page.Request.UserHostAddress;
//System.Net.IPAddress ip = System.Net.IPAddress.Parse(Request.UserHostAddress); //根据目标ip地址的获取ip对象

//System.Net.IPHostEntry ihe = System.Net.Dns.GetHostEntry(ip); //根据ip对象创建主机对象
//string UserHostName = ihe.HostName;


binhaicaoli 2010-04-21
  • 打赏
  • 举报
回复
关注+帮顶!
gdlpc 2010-04-21
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
//写在这里
//读出原来的访问量+1
//更新数据库
//...自己写

gdlpc 2010-04-21
  • 打赏
  • 举报
回复
是数据库放在这里,
如果你还是用Application,一样也不行的,因为Applications要再新会话启动时才能运行的。
依照点击率的方法
rr998 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 gdlpc 的回复:]
用这个刷新是不会加1的,要再新会话启动时运行的
要不你可以在每个页面中的
protected void Page_Load(object sender, EventArgs e)
{
//写在这里

[/Quote]

刚写错了,是操作数据库的部分写在这里吗?
rr998 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 gdlpc 的回复:]
用这个刷新是不会加1的,要再新会话启动时运行的
要不你可以在每个页面中的
protected void Page_Load(object sender, EventArgs e)
{
//写在这里

[/Quote]
是操作数据库的部分写在数据库里吗?
gdlpc 2010-04-21
  • 打赏
  • 举报
回复
用这个刷新是不会加1的,要再新会话启动时运行的
要不你可以在每个页面中的
protected void Page_Load(object sender, EventArgs e)
{
//写在这里
rr998 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 gdlpc 的回复:]
1、注释掉:
Application.Lock();
Application.UnLock();

2、在Web.Config中加上:

<sessionState mode="InProc" timeout="10" cookieless="false"/>
<!--上句是用户加上的,10分钟后生效-->
[/Quote]

还是不行 刷新仍然不加1 除非重新打开新的ie
gdlpc 2010-04-21
  • 打赏
  • 举报
回复
1、注释掉:
Application.Lock();
Application.UnLock();

2、在Web.Config中加上:

<sessionState mode="InProc" timeout="10" cookieless="false"/>
<!--上句是用户加上的,10分钟后生效-->
rr998 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 yan267 的回复:]
C# code


void Session_Start(object sender, EventArgs e)
{
//在新会话启动时运行的代
Application.Lock();
Application["total"] = (int)Application["total"] + 1;

Appli……
[/Quote]

那这样会不会很慢呢,我每打一次或刷新一次就操作一次数据库,这样行吗?我不太懂能否在说详细点,还有如果是操作数据库 就不用写在global文件里写了吧 如果我想知道网的点击量 那就直接在首页的cs文件写就行了,不用在global文件中写了 对吗?
yan267 2010-04-21
  • 打赏
  • 举报
回复


void Session_Start(object sender, EventArgs e)
{
//在新会话启动时运行的代
Application.Lock();
Application["total"] = (int)Application["total"] + 1;

Application["online"] = (int)Application["online"] + 1;
Application.UnLock();

SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["TongJiConnectionString"].ConnectionString;
con.Open();
SqlCommand cmd = new SqlCommand("update tongji set Number=" + Application["total"].ToString(), con);
cmd.ExecuteNonQuery();
con.Close();


}



最简单的办法就是全部用数据库操作。不用application

读取数据同样从数据库读

rr998 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 guyehanxinlei 的回复:]
可以加一个站长统计
[/Quote]

那如何将统计的数据提取出来啊?
ajccom 2010-04-20
  • 打赏
  • 举报
回复
我的做的就比较简单了
一张表:访问量
pageload下确定session["guest"]是否空,空->>>>访问量+1,session["guest"]="guest"

站内每个页的pageload都写下就ok了


学的比较浅显点 o(╯□╰)o
rr998 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 guyehanxinlei 的回复:]
可以加一个站长统计
[/Quote]
能否说的详细点,只说说网站的访问量都需要做什么也行,我这样做哪里不对吗?
guyehanxinlei 2010-04-20
  • 打赏
  • 举报
回复
可以加一个站长统计
rr998 2010-04-20
  • 打赏
  • 举报
回复
大家帮帮忙啊 自己顶下!
zy382215852 2010-04-20
  • 打赏
  • 举报
回复
jffffff
rr998 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zxqiangwhere 的回复:]
<%@ Application Language="C#" %>

<script runat="server">

void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码
Application.Lock();
Application["Counter"] = 0;
Ap……
[/Quote]

谢谢,但这样没有保存到数据库 当应用程序重新启动时 就又从零开始了...
zxqiangwhere 2010-04-20
  • 打赏
  • 举报
回复
<%@ Application Language="C#" %>

<script runat="server">

void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码
Application.Lock();
Application["Counter"] = 0;
Application.UnLock();
}

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

}

void Application_Error(object sender, EventArgs e)
{
//在出现未处理的错误时运行的代码

}

void Session_Start(object sender, EventArgs e)
{
//在新会话启动时运行的代码
Application.Lock();
Application["Counter"] = (int)Application["Counter"] + 1;
Application.UnLock();
}

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

}

</script>
qq2013 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wang5225 的回复:]
关注+帮顶!
[/Quote]

关注+帮顶!
加载更多回复(4)
ASP.NET 4权威指南》是ASP.NET领域的又一鸿篇巨制,由资深ASP.NET专家亲自执笔,知名微软技术社区和权威技术专家一致鼎力推荐。 它是国内第一本关于ASP.NET 4的著作。从广度上讲,内容系统而全面,全书一共包含4个部分:第一部分以一个易于实践的示例开篇,既能帮助读者快速了解ASP.NET的开发流程,还能帮助读者建立ASP.NET开发的大局观,紧接着全面介绍了ASP.NET的各种常用控件,这是ASP.NET的基础;第二部分详尽地讲解了ASP.NET访问的所有细节,包括数据管理、数据控件绑定与操作、GridView控件、LINQ查询、LINQ与ADO.NET和XML,以及ADO.NET实体框架等;第三部分深入浅出地讲解了开发一个Web站点必须掌握的各种知识点、流程和方法;第四部分是本书的高级话题,分析了ASP.NET状态管理、自定义服务器控件、ASP.NET缓存、多语言本地化应用程序、ASP.NET Web部件等。从深度上来讲,本书对实际开发中极不常用而大部分同类书都浓墨重彩的知识点只做了必要性的介绍,对于较容易给开发者带来困惑而大部分同类书都浅尝辄止的知识点进行了深入分析,其详细程度是一般同类书不能比拟的。从实践性上讲,本书精心设计了大量可操作性强和极具借鉴价值的实例代码与解决方案。 本书在广度、深度和实践性上完美结合,既能引领初学者快速在实践中掌握ASP.NET开发,又能帮助有一定经验的读者解决在实际开发中遇到的各种疑难问题。
ASP.NET 4 权威指南》是ASP.NET 领域的又一鸿篇巨制,由资深ASP.NET 专家亲自执笔,知名微 软技术社区和权威技术专家一致鼎力推荐。 它是国内第一本关于ASP.NET 4 的著作。从广度上讲,内容系统而全面,全书一共包含4 个部分: 第一部分以一个易于实践的示例开篇,既能帮助读者快速了解ASP.NET 的开发流程,还能帮助读者建立 ASP.NET 开发的大局观,紧接着全面介绍了ASP.NET 的各种常用控件,这是ASP.NET 的基础;第二部分 详尽地讲解了ASP.NET 访问的所有细节,包括数据管理、数据控件绑定与操作、GridView 控件、LINQ 查询、LINQ 与ADO.NET 和XML,以及ADO.NET 实体框架等;第三部分深入浅出地讲解了开发一个Web 站 点必须掌握的各种知识点、流程和方法;第四部分是本书的高级话题,分析了ASP.NET 状态管理、自定 义服务器控件、ASP.NET 缓存、多语言本地化应用程序、ASP.NET Web 部件等。从深度上来讲,本书对 实际开发中极不常用而大部分同类书都浓墨重彩的知识点只做了必要性的介绍,对于较容易给开发者带 来困惑而大部分同类书都浅尝辄止的知识点进行了深入分析,其详细程度是一般同类书不能比拟的。从 实践性上讲,本书精心设计了大量可操作性强和极具借鉴价值的实例代码与解决方案。 本书在广度、深度和实践性上完美结合,既能引领初学者快速在实践中掌握ASP.NET 开发,又能帮 助有一定经验的读者解决在实际开发中遇到的各种疑难问题。
ASP.NET开发典型模块大全(修订版)》以关键技术和热点技术为核心,通过27个典型模块和5章热点技术,全面地介绍了如何使用asp.net进行各领域的web项目开发。全书共3篇分为32章,第1篇关键模块篇,覆盖网站开发的关键领域,内容涉及论坛、博客、播客、网络硬盘、电子邮件、在线考试、网站备忘录、在线短消息、网站访问量统计与分析、系统后台管理权限分配等网站关键模块;第2篇常见模块篇,覆盖网站开发的各个领域,内容涉及网站会员注册及登录、会员密码找回、留言本、上传与下载、图片资源管理、搜索引擎、网上问卷调查、rss在线订阅、聊天室、购物车、在线银行支付、手机短消息管理、在线音乐、投票系统、万能打印、数据自动备份与恢复等常见模块;第3篇热点技术应用篇,解决网站开发在某个领域遇到的技术难题,内容涉及linq数据访问技术、安全技术、服务技术、ajax、高级应用技术等。 《ASP.NET开发典型模块大全(修订版)》附有配套光盘。光盘提供了书中所有案例的全部源代码,并经过精心调试,在windows xp和windows 2000下全部通过,保证能够正常运行。此外,光盘中还提供有编程词典试用版软件。 《ASP.NET开发典型模块大全(修订版)》案例涉及领域广泛,实用性非常强。学习本书读者可以了解各个领域的特点,能够针对某一行业进行软件开发,也可以通过光盘中提供的模块源代码进行二次开发,以减少开发系统所需要的时间。本书适合各级软件开发人员学习使用,也可供大、中专院校师生学习参考。

62,025

社区成员

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

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

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

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