# Kleine hit tracking module voor .TEXT 0.95 blogs...

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

<!-- category -- mostlylucidcouk, Imported -->
OK, verschrikkelijk gedocumenteerdM SK1 maar het werkt... dit is gewoon de bron voor een kleine HttpModule die stopt op hits naar een MSC3TEXT blog - vrij eenvoudig, maar zou iedereen die het wil doen een start moeten geven.

Met behulp van System;

Met behulp van System.Web;

Met behulp van System.Data;

Met behulp van System.DataM SK1SqlClient;

Met Dottext.Framework;

Met behulp van het systeem.Collecties.SpecializedM SK2

Met behulp van System.IO;

Met behulp van het systeem.Text;

Met behulp van het systeem.Xml.SerialisatieM SK2

Met behulp van System.Threading;

Met behulp van System.Net;

Met behulp van Microsoft.ApplicationBlocks

Namespace ExtraControls

{

///

/// Samenvattingsbeschrijving voor ViewTrackModule

///

publieke klas ViewTrackModule : IHttpModule

{

#region IHttpModule Members

public void Init(HttpApplication context)

{

context.EndRequest += nieuwe EventHandlerM SK2context\_EndRequest);

}

Publiek leegte Verwijdering()

{

// TODO : Voeg ViewTrackModule toe.Verwerking opdelen

}

#endregion

///

/// Ok, bit ongebruikelijk ...maar ik heb het BlogConfig-object nodig om beschikbaar te zijn voor de DB-toegang

///

///

///

Private void context\_EndRequestM SK1object-versender, EventArgs eMSC3

{

HttpApplication httpApp = stuurder als HttpsApplication;

System.Uri ur = httpAppMSC2RequestM SK3UrlReferrerMスク4

String testHost = string.VleegM SK2

string thisHost = httpApp.RequestM SK2ServerVariables["SERVeerder\_NAME"];

Als(ur M SK1 null)

{

testHost = ur.HostM SK2

}

Als(testHost != dezeHostM SK2

{

HttpRequest re = httpApp.RequestM SK2

LogToDBDel del = nieuwe Log ToDBDel(LogToDBM SK2

IAsyncResult ar = del.BeginInvokeMST2reM ST3nullM st4null~M st5

}

}

private delegate void LogToDBDel(HttpRequest re);

private void LogToDB(HttpRequest re)

{

String m\_connectionString

string clientIP = re.UserHostAddressM SK2

Als(!kliënt IP.Begint metM SK2 && ≥!klient IP\.Be Begint met\("10."))

{

string clientUserAgent = re.UseragentM SK2

string clientReferer = re.ServerVariables["HTTP\_VERwijzer"];

string clientHostName = string.VleegM SK2

Probeer

{

clientHostName = Dns.GetHostByAddressMska2clientIPM Ska3HostnameMske4

}

Catch(Excepte)

{

clientHostName = reM SK1UserHost Name;

}

string clientQueryString = reM SK1RawUrl;

SqlParameter[] sqlParams = SqlHelperParameterCacheM SK2GetSpParameterSet(m\_connectionString\_Blog\_SaveEntryStats"); 

sqlParams[0].Werk  =kliënt IP;

sqlParams[1].Werk  =kliëntUserAgent;

sqlParams[2].Werk  =clientHostName;

sqlParams[3].Werk  =clientQueryString;

sqlParams[4].Wert = Datum en tijd.NuM SK3

sqlParams[5].Werk  =kliëntreferenaar;

Probeer

{

SqlHelper.ExecuteNonQuery(m\_connectionString,CommandtypeM SK2StoredProcedureMSC3  "pr\_Blog\_SaveEntryStats

}

Catch(Excepte)

{

}

}

}

}

}

Zoals gewoonlijk, heeft dit een invoer nodig in het web.config om in de module te hakkenM SK2

&lt;http-modules&gt;
&lt;Voeg naam toe="RequestLogger " type="ExtraControlsM SK3ViewTrackModuleMSC4 ExtraControls&gt;
&lt;/httpmodules&gt;