3

ユーザーがヒットしたすべてのページをログに記録する簡単な方法はありますか?これはglobal.asax.csファイル内にあると思います。これにより、ヒットしたページのURLをdbテーブルに書き込むことができます。

4

2 に答える 2

4

私の目的に合うと思われるこの問題を完了する方法を見つけました。

ページがヒットするたびに呼び出される PostAuthenticateRequestHandler メソッドを使用します。これらは実際のページ ヒットではないため、空のパスはすべて無視して "/" だけにします。

//in global.asax.cs file

private void PostAuthenticateRequestHandler(object sender, EventArgs e)
{
   ///...///

   string extension = this.Context.Request.CurrentExecutionFilePathExtension;
   string path = this.Context.Request.CurrentExecutionFilePath;

   if (extension == string.Empty && path != "/")
   {
   PageVisitedLogModel pageVisitedLogModel = new PageVisitedLogModel
   {
       DateVisited = DateTime.Now,
       IPAddress = this.Context.Request.UserHostAddress,
       PageURL = this.Context.Request.RawUrl,
       Username = this.Context.User.Identity.Name
   };

   //then writes to log
   DataHelper.UpdatePageVisitedLog(pageVisitedLogModel);
}
}
于 2012-07-04T13:26:44.807 に答える
0

これを行う 1 つの方法は、この例のようにグローバル アクション フィルターを使用することです。これにより、ソリューション内の任意のアクションに対してコードを実行できます。

于 2012-06-28T13:55:48.263 に答える