Я использую MVC Mini Profiler и показываю профилировщик только для аутентифицированных пользователей с ролью «Профилировщик». Пример доставки в MiniProfiler.cs использовал метод AuthenticateRequest, чтобы определить, следует ли прекратить профилирование, но я переключился на использование PostAuthorizeRequest (после прочтения этот вопрос ), чтобы получить доступ к IPrincipal и Метод IsInRole. Могу ли я просто запустить профилировщик в методе 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();
};
}