2012-02-22 5 views
0

.NET Asp MVCでページリクエストが開始されたときに、ページリクエストの初期タイムスタンプを取得するにはどうすればよいですか?タイムスタンプとアクションの開始点を比較して、OnActionExecutedとしてもう一度パイプラインのどこかでアプリケーションが "head"要素で応答を開始する前に時間を費やしていることを確認してください。データ要求が処理されています。助言がありますか?.NET Asp MVCでページリクエストが開始されたときに、ページリクエストの初期タイムスタンプを取得するにはどうすればよいですか?

+1

が重複のように見えるhttp://stackoverflow.co m/questions/148384/how-do-i-inspect-the-asp-net-request-pipeline –

+0

これは間違いなく便利です。しかし、.NETがHttpModulesの前に引き継ぎ、その後モジュールを介してタイミングを取ってから、アクションが実行されるようにタイミングを取るようになっています。これはパイプラインのHttpModuleが問題を引き起こしているかどうかを私に知らせるはずです。私はisapiフィルタのアプローチを考えています。その場合はウェブサーバーと関連しており、.net技術ではないことに疑問がある場合は – lucidquiet

+0

となります。 –

答えて

2

あなたがのHttpContextに現在のタイムスタンプを配置し、あなたのOnActionExecutedまたは任意の内側にあなたは、のHttpContextからこのタイムスタンプを取得する新しいタイムスタンプを計算し、substractionを作り、あなたのGlobal.asaxにApplication_BeginRequestを購読する:

Global.asaxの:

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    this.Context.Items["timestamp"] = DateTime.UtcNow; 
} 

OnActionExecuted:

public override void OnActionExecuted(ActionExecutedContext filterContext) 
{ 
    DateTime initial = (DateTime)filterContext.HttpContext.Items["timestamp"]; 
    DateTime current = DateTime.UtcNow; 
    long totalMilliseconds = (long)(current - initial).TotalMilliseconds; 
    ... 
} 
関連する問題