2017-06-28 23 views
1

.Net Webアプリケーションが要求を処理するのにかかる時間のロギングを追加したいとします。Application_BeginRequestとApplication_EndRequestが結びついたときを特定する

私の考えは、私がApplication_BeginRequestHttpContext.Current.Request.Pathをチェックして、開始時刻を記録することができ、Application_BeginRequestApplication_EndRequestを使用していたと同じHttpContext.Current.Request.PathApplication_EndRequestログ終了時刻を通過するとき。しかし、多忙なウェブサイトでは、複数の通話でこのアイデアが混乱することは保証できませんでした(同じ通話よりも実行に時間がかかることがあります)。

私の質問は、私がApplication_BeginRequestApplication_EndRequestで一緒に結びついているものをチェックできるものがありますか?何かIDなどありますか?それとももっとシンプルなことができますか?このため

+0

あなたは 'HttpContext.Current.Items'に物事を埋めることができます。 –

+0

識別子としてのIDとしての各要求。ではなぜそれを使用しないのですか?もしあなたがIHttpModuleからHTTPModuleを実装すれば、それは起こることができます – Coemgen

+0

'BeginRequest'で一意のIDを生成し、それを' .Items'に追加し、 'EndRequest' – sbarnby71

答えて

1

私のソリューションは、Application_BeginRequestでta.speot.is

により示唆されるように、私はSystem.Diagnostics.Stopwatchを作成し、それに.Startを呼び出すHttpContext.Current.Itemsを使用することでした。

StopwatchHttpContext.Current.Itemsに追加します。 Application_EndRequest

HttpContext.Current.ItemsからStopwatchを取得し、私は今.Elapsedを確認することができます.Stopを呼び出し、それは私に私のタイミングを与えます。私は私の質問を投稿すると

私は HttpContext.Current.Itemsが呼び出しに特異的であることを認識していませんでしたが、私は今 - これは解決策を提供します。

関連する問題