私は MVC ミニ プロファイラーを使用しており、「プロファイラー」ロールの認証済みユーザーのプロファイラーのみを表示しています。MiniProfiler.cs で配布されている例では、プロファイリングを停止する必要があるかどうかを判断するために AuthenticateRequest メソッドを使用していましたが、IPrincipal および IsInRole メソッドにアクセスできるように、 (この質問を読んだ後) PostAuthorizeRequest を使用するように切り替えました。PostAuthorizeRequest メソッドでプロファイラーを開始することはできますか? それとも引き続き停止して PostAuthorizeRequest の結果を破棄する必要がありますか? リクエストごとにプロファイラーを開始および停止するためのオーバーヘッドはどれくらいですか?
現在のコード:
public void Init(HttpApplication context)
{
context.BeginRequest += (sender, e) =>
{
MiniProfiler.Start();
};
context.PostAuthorizeRequest += (sender, e) =>
{
var user = ((HttpApplication)sender).Context.User;
if (user == null || !user.Identity.IsAuthenticated || !user.IsInRole("Profiler"))
{
MvcMiniProfiler.MiniProfiler.Stop(discardResults: true);
}
};
context.EndRequest += (sender, e) =>
{
MiniProfiler.Stop();
};
}
提案されたコード:
public void Init(HttpApplication context)
{
context.PostAuthorizeRequest += (sender, e) =>
{
var user = ((HttpApplication)sender).Context.User;
if (user != null && user.Identity.IsAuthenticated && user.IsInRole("Profiler"))
{
MiniProfiler.Start();
}
};
context.EndRequest += (sender, e) =>
{
MiniProfiler.Stop();
};
}