不是站点计数器,而是每一个页面浏览的次数,下面的计数器是全局的,只能给站点的访问量计数。
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;namespace qx
{
public class Global : System.Web.HttpApplication
{ protected void Application_Start(object sender, EventArgs e)
{
Application["counter"] = 0;
} protected void Application_End(object sender, EventArgs e)
{ }
void Session_Start(object sender, EventArgs e)
{
Application.Lock();
Application["counter"] = (int)Application["counter"] + 1;
Application.UnLock();
}
}
}
在其他的asp.net页面里如果要调用就直接 您是第<%=Application["counter"]%> 位访问者。
我想给每一个页面设置一个计数器,请问怎么写?谢谢
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;namespace qx
{
public class Global : System.Web.HttpApplication
{ protected void Application_Start(object sender, EventArgs e)
{
Application["counter"] = 0;
} protected void Application_End(object sender, EventArgs e)
{ }
void Session_Start(object sender, EventArgs e)
{
Application.Lock();
Application["counter"] = (int)Application["counter"] + 1;
Application.UnLock();
}
}
}
在其他的asp.net页面里如果要调用就直接 您是第<%=Application["counter"]%> 位访问者。
我想给每一个页面设置一个计数器,请问怎么写?谢谢
第一个 先建一个webservice 保存访问记录webservice.asmx[WebService(Namespace = "http://www.abc.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
[WebMethod]
public void RecordVisited(string url, string reffer)
{
try
{
SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLConnString1"].ConnectionString);
#region Parameters
SqlParameter[] parameters = {
new SqlParameter("@IP", SqlDbType.VarChar,50 ),
new SqlParameter("@UserName", SqlDbType.VarChar,50 ),
new SqlParameter("@Location", SqlDbType.VarChar,100 ),
new SqlParameter("@Reffer",SqlDbType.VarChar,500) };
parameters[0].Value = HttpContext.Current.Request.UserHostAddress; //访问ip
parameters[1].Value = "" ; //已登陆的用户名
parameters[2].Value = url; //访问地址
parameters[3].Value = reffer; //从哪里点击到这个面页
#endregion
SqlCommand sqlcmd = sqlConn.CreateCommand();
sqlcmd.CommandText = " insert into [VisiteRecords] ( [IP], [UserName], [Location], [ActionTime],[Reffer] ) values( @IP, @UserName, @Location, getdate(),@Reffer ) ";
for (int i = 0; i < parameters.Length; i++)
{
sqlcmd.Parameters.Add(parameters[i]);
}
sqlConn.Open();
sqlcmd.ExecuteNonQuery();
sqlConn.Close();
}
catch (Exception e){ }
} [WebMethod]
public void RecordStay(string url,int staysecods)
{
SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLConnString1"].ConnectionString);
#region Parameters
SqlParameter[] parameters = {
new SqlParameter("@IP", SqlDbType.VarChar,50 ),
new SqlParameter("@UserName", SqlDbType.VarChar,50 ),
new SqlParameter("@Location", SqlDbType.VarChar,100 ),
new SqlParameter("@StayCount",SqlDbType.Int,4) };
parameters[0].Value = HttpContext.Current.Request.UserHostAddress; //访问ip
parameters[1].Value = ""; ////已登陆的用户名
parameters[2].Value = url; //访问的地址
parameters[3].Value = staysecods; //在此页面停留时间 #endregion
SqlCommand sqlcmd = sqlConn.CreateCommand();
sqlcmd.CommandText = " insert into [VisiteStay] ( [IP], [UserName], [Location],[StayCount], [ActionTime] ) values( @IP, @UserName, @Location,@StayCount ,getdate() ) ";
for (int i = 0; i < parameters.Length; i++)
{
sqlcmd.Parameters.Add(parameters[i]);
}
sqlConn.Open();
sqlcmd.ExecuteNonQuery();
sqlConn.Close();
}
}
2 建立可以访问该webservice的js脚js.js
// JScript 文件
function Record()
{
var url = "/WebService.asmx" ;
var uri = "http://www.abc.com" ;
var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
if(xmlhttp == null)return;
var soapaction = uri + "/" + 'RecordVisited' ;
xmlhttp.Open("POST",url,true, "","") ;
xmlhttp.setRequestHeader("SOAPAction", soapaction) ;
xmlhttp.setRequestHeader("Content-Type","text/xml") ;
var content = '<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <RecordVisited xmlns="http://www.netufi.cn/"> <url>'+window.location+'</url> <reffer>'+escape(document.referrer)+'</reffer> </RecordVisited> </soap:Body></soap:Envelope> ';
xmlhttp.Send (content) ;
}function Stay()
{
var url = "/WebService.asmx" ;
var uri = "http://www.abc.com" ;
var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
if(xmlhttp == null)return;
var soapaction = uri + "/" + 'RecordStay' ;
xmlhttp.Open("POST",url,true, "","") ;
xmlhttp.setRequestHeader("SOAPAction", soapaction) ;
xmlhttp.setRequestHeader("Content-Type","text/xml") ;
var content = '<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <RecordStay xmlns="http://www.netufi.cn/"> <url>'+window.location+'</url> <staysecods>'+staytimecount+'</staysecods> </RecordStay> </soap:Body></soap:Envelope> ';
xmlhttp.Send (content) ;
}//添加访问记录var staytimecount = 0;function addcount()
{
staytimecount += 1;
}
//增加计数时间
function loadWindow()
{
Record();
staytimecount = 0;
window.setInterval("addcount()",1000);
}function unloadWindow()
{
Stay();
}
//添加事件
window.attachEvent("onload", function(){ loadWindow(); });
window.attachEvent("onunload", function(){ unloadWindow(); }); 3 在global.asax中将这个js引用添加到每个页面<script runat="server">
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
if (HttpContext.Current.Handler is Page)
{
Page pa = HttpContext.Current.Handler as Page; //如果访问的是页面,则添加
pa.Load += new EventHandler(pa_Load);
}
} void pa_Load(object sender, EventArgs e)
{
if (HttpContext.Current.Handler is Page)
{
Page pa = HttpContext.Current.Handler as Page;
try
{
pa.Header.Controls.Add(new LiteralControl(" <script language=\"javascript\" type=\"text/javascript\" src=\"/js.js\"></script>"));
}
catch
{
//此处记录未能添加的页面,检查原因或手工添加js引用既可
}
}
}
新建一个类PageNum,引入SQL的命名空间
using System.Data.SqlClient;
设计数据库,添加PageNum表,里面加入列
Url Num ...
index.aspx 0
login.aspx 0上面加如类似的信息,NUM字段默认为0次吧.
下面是这个类的Code,里面的数据库连接字符串自己改吧.
public class PageNum : System.Web.UI.Page
{
/// <summary>
/// 默认构造器,添加页面初始化的方法.
/// </summary>
public PageNum()
{
this.Init += new EventHandler(PageBase_Init);
} private void PageBase_Init(object sender, EventArgs e)
{
if (RedNum())
{
UpDateNum();
}
else
{
Response.Write("该页并没有在加入统计");
}
} /// <summary>
/// 获得页面路径
/// </summary>
/// <returns></returns>
private string ModuleName()
{
string path = this.Request.Path.ToLower();
string[] str = path.Split('/');
return str[str.Length - 1].Trim(); }
/// <summary>
/// 判断数据库是否加入该页面统计
/// </summary>
/// <returns></returns>
private bool RedNum()
{
string sql = "select * from PageNum where Url='" + ModuleName() + "'";
SqlConnection Conn = new SqlConnection("这里写数据库连接字符串");
Conn.Open();
SqlCommand cmd = new SqlCommand(sql, Conn);
int mCount = cmd.ExecuteScalar();
Conn.Close();
if (mCount != 0)
{
return true;
}
else
{
return false;
}
} /// <summary>
/// 更新相关页面访问次数
/// </summary>
private void UpDateNum()
{
int mNum;
string sql = "select * from PageNum where Url='" + ModuleName() + "'";
string UpSql = "update PageNum set Num='" + mNum + "' where Url='" + ModuleName() + "'";
SqlConnection Conn = new SqlConnection("这里写数据库连接字符串");
Conn.Open();
SqlCommand cmd = new SqlCommand(sql, Conn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
mNum = Int32.Parse(dr["Num"]) + 1;
dr.Close();
SqlCommand cmd = new SqlCommand(UpSql, Conn);
cmd.ExecuteNonQuery();
cmd.Dispose();
}
Conn.Close();
}
}
类写好之后,当你把数据库需要统计的页面文件名加入后,在该页里的CS文件里把Page_Load上面类继承的部分改为上面写的类public partial class _Default : PageNum反正你要进行统计的页全部继承PageNum类,在数据库也要写对应的页面名.这样就OK了,怎么样取出我就不用写了,如果怎么取都不会,那你去好好看看书吧.