# Pieni hittiseurantamoduuli .TEXT 0.95 -blogeille...

<datetime class="hidden">2004-07-06T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported -->
Okei, hirveästi dokumentoitu, mutta se toimii...tämä on vain pienen HttpModulen lähde, joka osuu .TEXT-blogiin - aika yksinkertainen, mutta pitäisi antaa kaikille, jotka haluavat tehdä sen. Julkaisen jossain vaiheessa täydellisemmän version (lähinnä haluan vain testata, miten tämä iho käyttäytyy lähetetyllä koodilla ;-))

Järjestelmän käyttö;

System.Web:n käyttö;

Käyttämällä System.Dataa;

käyttää System.Data.SqlClient -järjestelmää;

Dottextin käyttö. Framework;

Käyttämällä System.Collections.Erityinen;

System.IO:n käyttö;

Käyttämällä System.Text;

Käyttämällä System.Xml.Serialisointia;

Käyttämällä System.Threading;

käyttää System.Netiä;

Microsoft.ApplicationBlocks.Data;

namespace ExtraControls

{

///

/// Yhteenveto kuvaus ViewTrackModulesta.

///

Yleisön luokka ViewTrackModule : IHttpModule

{

#alue IHttpModulen jäsenet

Julkisuustyhjiö Init(HttpApplication konteksti)

{

Context.EndRequest + = uusi EventHandler (konteksti)\_EndRequest);

}

Julkinen tyhjiö Hävitä()

{

// TODO: Lisää ViewTrackModule.

}

#endregion

///

/// Okei, hieman epätavallista... mutta tarvitsen BlogConfig-objektin DB:n käyttöön...

///

///

///

yksityinen tyhjä konteksti\_EndRequest(kohdelähettäjä, EventArgs e)

{

Http-sovellus httpApp = lähettäjä Http-sovelluksena;

Järjestelmä.Uri ur = httpApp.Request.UrlReferer;

JousitestiHost = jousi.Tyhjä;

String thisHost = httpApp.Request.ServerVariables["SERVERI\_NAME"]

if(ur ! = nolla)

{

TestHost = ur.Host;

}

if(testHost!= thisHost)

{

HttpRequest re = httpApp.Request;

LogToDBDel del = uusi LogToDBDel (LogToDB);

IAsyncResult ar = del.BeginInvoke(re, null, null);

}

}

yksityinen valtuutettu mitätöi LogToDBDel-pyynnön (HttpRequest re)

Private Tyhjennä LogToDB(HttpRequest re)

{

merkkijono m\_LiitäntäString = Dottext.Framework.Configuration.BlogConfigurationStrings.Instance().BlogProviders.DbProvider.ConnectionString;

String clientIP = re.UserHostAddress;

if( .asiakasIP.StartsWith('192.) && !asiakasIP.StartsWith('10.'))

{

String clientUserAgent = re.UserAgent;

String clientReferer = re.ServerVariables["HTTP\_REFER"]

String clientHostName = string.Empty;

kokeile

{

clientHostName = Dns.GetHostByAddress(ClientIP).HostName;

}

Saaliit(Poikkeus)

{

clientHostName = re.UserHostName;

}

String clientQueryString = re.RawUrl;

SqlParametri[] sqlParams = SqlHelperParameterCache.GetSpParameterSet(m)\_Liitä string, "pr\_Blog\_TallennaEntryStats"

SqlParams[0]Arvo = clientIP;

SqlParams[1]Arvo = clientUserAgent;

SqlParams[2.Arvo = clientHostName;

SqlParams[3.Arvo = clientQueryString;

SqlParams[4]Arvoisa = DateTime.Nyt;

SqlParams[5.Arvo = ClientReferer;

kokeile

{

SqlHelper.ExecuteNonQuery(m\_LiitäntäString, Komentotyyppi.StoredProcedure, "pr\_Blog\_SaveEntryStats, sqlParams) ;

}

Saaliit(Poikkeus)

{

}

}

}

}

}

Kuten tavallista, tämä tarvitsee maininnan web.config-palveluun kytkeäkseen moduulin:

&lt;httpModules&gt;
&lt;Lisää nimi="RequestLogger" type="ExtraControls.ViewTrackModule, ExtraControls"/&gt;
&lt;Modules-lehti kertoo:&gt;