Гаразд, дуже задокументовано, але це працює... це просто джерело для невеличкої версії HtpModule, яку слід вести до блогу. TEXT - досить простий, але який має надати змогу будь- кому, хто хоче це зробити на початку. Я докладаю докладну версію у певний момент (хоча просто хочу перевірити поведінку цієї шкірки за допомогою встановленого коду ; -)
використання системи;
за допомогою System. Web;
за допомогою System.Data;
за допомогою System. Data. SqlClient;
за допомогою Dottext.Framework;
використання System.Collections.Specialized;
за допомогою System.IO;
за допомогою System.Text;
за допомогою System. Xml.Serialation;
за допомогою System.Threading;
за допомогою System.Net;
за допомогою Microsoft.ApplicationBlocks.Data;
ExplaceControls
{
///
// Опис резюме для ViewTrackModule.
///
публічний клас ПереглядTrackModule: IHtpModule
{
публічний контекст Init}HttpApplication)
{
context.EndRequest += нова подіяHandler}context_EndRequest);
}
публічна порожнеча
{
/// TODO: Додати реалізація ViewTrackModule. Dispose
}
///
// OK, трохи незвичний... але мені потрібен об' єкт BlogConfig для доступу до DB...
///
///
///
core void context_EndRequestobject відправник, ПодіяArgs e)
{
HttpApplication httpApp = відправник як 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)
{
HtpRequest re = httpApp.Request;
LogToDBDel del = new LogToDBDel}LogToDB);
IAyncResult ar = del. BenginInvokere, null, null);
}
}
приватний делегат void LogToDBDel}HtpRequest re);
private void LogToDB}HtpRequest re)
{
string m_ connectionString = Dottext.Framework.Configuration.BlogConfigurationSettings. Instance}). BlogProviders.DbProvider. ConnectionString;
string clientIP = re.UserHostAddress;
if}!client. startsWith"192.) &&!client.StartsWith" 10 .")
{
string clientUserAgent = re.UserAgent;
string clientReferer = re. ServerVariables[HTTP_ REFERER"];
string clientHostName = string.Empty;
спробувати
{
clientHostName = Dns.GetHostByAddress}$clientIP). HostName;
}
fued}Особення)
{
clientHostName = re.UserHostName;
}
string clientQuery = re.RawUrl;
SqlParater[] sqlParrams = SqlHelperParameterCache.GetSpParameterSetm_ connectionString, "pr_Блог_SaveEntryStats";
sqlPrams[0]. Значення = clientIP;
sqlPrams[1]. Значення = clientUserAgent;
sqlPrams[2].Value = clientHostName;
sqlPrams[3].Value = clientQuery;
sqlPrams[4]. Value = Дата і час. Тепер;
sqlPrams[5].Value = clientReferer;
спробувати
{
SqlHelper.ExecuteNonquerym_ connectionString, CommandType.StoredProcedure, "pr_Блог_SaveEntryStats, sqlParams) ;
}
fued}Особення)
{
}
}
}
}
}
Зазвичай, для того, щоб з' єднатися з модулем, потрібен запис у мережі. config:
<httpModules> <add name=" RequestLogger" type=" ExtraControls.ViewTrackModule, ExtraControls" /> </ httpModules>
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.