Ответ 1
Мне удалось выполнить эту работу в приложении ASP.Net MVC, используя MiniProfiler.
Сначала настройте MiniProfiler в соответствии с документами. Убедитесь, что вы завершаете свой SqlConnection внутри ProfiledDbConnection.
Обратите внимание, что вам не нужно включать визуальный виджет для этого, просто убедитесь, что профиль запущен до и заканчивается после каждого запроса.
Далее, в файле global.asax.cs, где профиль для этого запроса остановлен, внесите в него следующие изменения:
protected void Application_EndRequest()
{
// not production code!
MiniProfiler.Stop();
var logger = NLog.LogManager.GetCurrentClassLogger();
var instance = MiniProfiler.Current;
if (instance == null) return;
var t = instance.GetSqlTimings();
foreach (var sqlTiming in t)
{
logger.Debug(sqlTiming.CommandString);
}
}
Это буквально сбрасывает выполняемую команду SQL, но есть гораздо больше информации, включенной в модель, если вы хотите сообщить более подробную информацию.