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

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

<!-- category -- mostlylucidcouk, Imported -->
OK, vreselijk gedocumenteerd, maar het werkt...dit is gewoon de bron voor een beetje HttpModule die tracks hits naar een .TEXT blog - vrij eenvoudig maar moet iedereen die wil het een start te geven. Ik zal een meer complete versie op een bepaald punt plaatsen (hoofdzakelijk willen testen hoe deze huid zich gedraagt met geposte code;-))

gebruik van systeem;

gebruik van System.Web;

gebruik van System.Data;

gebruik van System.Data.SqlClient;

gebruik van Dottext.Framework;

het gebruik van System.Collecties.Gespecialiseerd;

gebruik van System.IO;

gebruik van System.Text;

gebruik van System.Xml.Serialization;

gebruik van System.Threading;

gebruik van System.Net;

gebruik van Microsoft.ApplicationBlocks.Data;

namespace ExtraControls

{

///

/// Samenvatting beschrijving voor ViewTrackModule.

///

publieke klasse ViewTrackModule: IHttpModule

{

#region IHttpModule Members

publieke leegte Init(HttpApplication context)

{

context.EndRequest += nieuw EventHandler(context\_EndRequest);

}

openbare leegte Gooien()

{

// TODO: Toevoegen ViewTrackModule.Verwijder implementatie

}

#endregion

///

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

///

///

///

privaat ongeldige context\_EndRequest(object afzender, EventArgs e)

{

HttpApplication httpApp = sender as HttpApplication;

System.Uri ur = httpApp.Request.UrlReferrer;

string testHost = string.Leeg;

string thisHost = httpApp.Request.ServerVariables["SERVER\_NAME"];

if(ur != null)

{

testHost = ur.Host;

}

if(testHost != thisHost)

{

HttpRequest re = httpApp.Request;

LogToDBDel = nieuwe LogToDBDel(LogToDB);

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

}

}

particuliere gedelegeerde ongeldig LogToDBDel(HttpRequest re);

privé leegte LogToDB(HttpRequest re)

{

tekenreeks m\_connectieString = Dottext.Framework.Configuration.BlogConfiguratieInstellingen.Instance().BlogProviders.DbProvider.ConnectionString;

string clientIP = re.UserHostAddress;

if(!clientIP.StartMet("192.") && !clientIP.StartMet("10."))

{

string clientUserAgent = re.UserAgent;

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

string clientHostName = string.Leeg;

proberen

{

clientHostName = Dns.GetHostByAddress(clientIP).HostName;

}

vangst(uitzondering)

{

clientHostName = re.UserHostName;

}

string clientQueryString = re.RawUrl;

SqlParameter[] sqlParams = SqlHelperParameterCache.GetSpParameterSet(m\_Verbinding string, "pr\_Blog\_SaveEntryStats");

sqlParamsunit synonyms for matching user input[0].Value = clientIP;

sqlParamsunit synonyms for matching user input[1].Value = clientUserAgent;

sqlParamsunit synonyms for matching user input[2].Value = clientHostName;

sqlParamsunit synonyms for matching user input[3].Value = clientQueryString;

sqlParamsunit synonyms for matching user input[4].Value = DateTime.Nu;

sqlParamsunit synonyms for matching user input[5].Value = clientReferer;

proberen

{

SqlHelper.executeNonQuery(m\_Verbinding string, CommandType.OpgeslagenProcedure, "pr\_Blog\_SaveEntryStats" , sqlParams) ;

}

vangst(uitzondering)

{

}

}

}

}

}

Zoals gewoonlijk heeft dit een item in het web.config nodig om te haaken in de module:

&lt;httpModules&gt;
&lt;voeg naam="RequestLogger" type="ExtraControls.BekijkTrackModule, ExtraControls"/&gt;
&lt;http://Modules&gt;