Back to "Poco éxito módulo de seguimiento para .TEXT 0.95 blogs..."

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

Imported mostlylucidcouk

Poco éxito módulo de seguimiento para .TEXT 0.95 blogs...

Tuesday, 06 July 2004

OK, terriblemente documentado, pero funciona... esta es sólo la fuente para un poco HttpModule que pistas golpea a un blog .TEXT - bastante simple, pero debe dar a cualquiera que quiera hacerlo un comienzo. Publicaré una versión más completa en algún momento (principalmente sólo quiero probar cómo se comporta esta piel con el código publicado ;-))

utilizando el sistema;

utilizando System.Web;

utilizando System.Data;

utilizando System.Data.SqlClient;

utilizando Dottext.Framework;

utilizando System.Colections.Specialized;

utilizando System.IO;

utilizando System.Text;

utilizando System.Xml.Serialization;

usando System.Threading;

utilizando System.Net;

usando Microsoft.ApplicationBlocks.Data;

namespace ExtraControls

{

///

/// Resumen de la descripción de ViewTrackModule.

///

clase pública ViewTrackModule : IHttpModule

{

#Region IHttpMembersModule

Init(HttpApplication context)

{

context.EndRequest = new EventHandler(context_EndRequest);

}

vacío público Deseche()

{

// TODO: Añadir ViewTrackModule.

}

#endregion

///

/// Ok, poco inusual... pero necesito que el objeto BlogConfig esté disponible para el acceso DB...

///

///

///

contexto de vacío privado_EndRequest(enviador de objetos, EventArgs e)

{

HttpApplication httpApp = remitente como HttpApplication;

System.Uri ur = httpApp.Request.UrlReferrer;

string testHost = string.Empty;

string thisHost = httpApp.Request.ServerVariables["SERVER_NAME"];

if(ur != null)

{

testHost = ur.Host;

}

if(testHost != thisHost)

{

HttpRequest re = httpApp.Request;

LogToDBDel del = nuevo LogToDBDel (LogToDB);

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

}

}

delegate private void LogToDBDel(HttpRequest re);

vacío privado LogToDB(HttpSolicitar re)

{

cadena m_conexiónString = Dottext.Framework.Configuration.BlogConfigurationSettings.Instance().BlogProviders.DbProvider.ConnectionString;

string clientIP = re.UserHostAddress;

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

{

string clientUserAgent = re.UserAgent;

string clientReferer = re.ServerVariables["HTTP_REFERENCIA"];

string clientHostName = string.Empty;

Intente

{

clientHostName = Dns.GetHostByAddress(clientIP).HostName;

}

captura (excepción)

{

clientHostName = re.UserHostName;

}

string clientQueryString = re.RawUrl;

SqlParameter[] sqlParams = SqlHelperParameterCache.GetSpParameterSet(m_conexiónString, "pr_Blog_SaveEntryStats");

sqlParams[0].Value = clientIP;

sqlParams[1].Valor = clienteUserAgent;

sqlParams[2].Value = clientHostName;

sqlParams[3].Value = clientQueryString;

sqlParams[4].Valor = DateTime.Now;

sqlParams[5].Value = clientReferer;

Intente

{

SqlHelper.EjecutarNonQuery(m_conexiónString, CommandType.StoredProcedure, "pr_Blog_SaveEntryStats", sqlParams) ;

}

captura (excepción)

{

}

}

}

}

}

Como de costumbre, esto necesita una entrada en la web.config para enganchar en el módulo:

<httpMódulos> <añadir nombre="RequestLogger" type="ExtraControls.ViewTrackModule, ExtraControls"/> </httpMódulos>

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.