65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 C# 进行自定义 Web 访问者跟踪

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.29/5 (16投票s)

2004 年 9 月 7 日

2分钟阅读

viewsIcon

71877

downloadIcon

1171

当 IIS 日志不足以进行您的网站分析时,您可以使用这种简单的技术来跟踪网页访问者的额外数据。

引言

当您想要收集有关网站访问者和客户端平台更多的数据,而这些数据未由 IIS 日志文件提供时,您可以使用这种简单的技术来实现。 如果您能够从服务器端收集数据,并且完全控制服务器端页面创建代码,那么您可能根本不需要这种技术。

背景

我开始这项简单的任务是因为我想跟踪 IIS 日志未记录的网页文档 ID(顺便说一下,我们的网站内容在 JSP 中是动态的,每个页面都有唯一的 ID)。 每当用户在我们的网站中浏览页面时,我们都希望跟踪他/她正在访问的文档 ID。 收集到的数据存储在 SQL Server 中。

使用代码

1.

确定您想要收集的数据类型。(IIS 日志提供客户端浏览器信息和平台信息。 您可以使用基本的 Web 日志工具来提取此信息。) 在我们的例子中,文档 ID、时间戳和 URL 引用器是我们想要收集的数据。

2.

创建一个数据库表,其中包含您正在捕获的数据字段。 您还需要创建一个存储过程来插入数据。

3.

在您尝试跟踪信息的网页中包含以下 HTML 代码:<img src='http://servername/dirname/webform.aspx?param1=val1&param2=val2' width="0" height="0">。 这里高度和宽度属性为 0,因为源不是实际的图像。 我们正在欺骗浏览器使用图像标签请求此页面。

4.

编写一个 aspx 应用程序,并在 Form load 函数中提取查询字符串值并将它们插入到数据库中。

/*Script for generating DB object for the sample project 
  attached. Copy paste the following  section in to your sql server
  enterprise manager and run it. */
    if exists (
        select * from dbo.sysobjects 
        where id = object_id(N'[dbo].[usr_log]') 
        and OBJECTPROPERTY(id, N'IsProcedure') = 1)
            drop procedure [dbo].[usr_log]

GO

    if exists (
        select * from dbo.sysobjects 
        where id = object_id(N'[dbo].[UsrLog]') 
        and OBJECTPROPERTY(id, N'IsUserTable') = 1)
            drop table [dbo].[UsrLog]

GO

CREATE TABLE [dbo].[UsrLog] (
 [id] [int] IDENTITY (1, 1) NOT NULL ,
 [timesmp] [datetime] NULL ,
 [Platform] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
 [BrowserVersion] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
 [ClrVersion] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
 [IsCrawler] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
 [RemoteHost] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
) ON [PRIMARY]
GO

SET QUOTED_IDENTIFIER ON 
GO

SET ANSI_NULLS OFF 
GO

CREATE PROCEDURE [usr_log] 
  @Platform varchar(256),
  @BowserVersion varchar(256),
  @ClrVersion varchar(256),
  @IsCrawler varchar(256),
  @RemoteHost varchar(256)
AS
BEGIN
 insert into UsrLog (Platform, 
                     BrowserVersion,
                     ClrVersion,
                     IsCrawler,
                     RemoteHost) 
 values (@Platform , 
         @BowserVersion, 
         @ClrVersion,
         @IsCrawler, 
         @RemoteHost)
END
GO

SET QUOTED_IDENTIFIER OFF 
GO

SET ANSI_NULLS ON 
GO
© . All rights reserved.