我将 MiniProfiler.Mvc5 v4.2.1 与 C# 一起用于 ASP.NET MVC5 网站。我正在基于源代码存储库中包含的 Samples.Mvc5 项目实现 MiniProfiler,并且在显示 SQL 计时时遇到问题。我很好奇我的设置是否有问题,但我不确定那可能是什么。
这是加载主页的示例,我很困惑为什么 SQL 计时和百分比都显示为 0.0:
但是,如果我真的点击 sql 计时我得到这个视图,这似乎表明每个 SQL 调用确实有与之关联的计时:
我用来定义 ProfileDbConnection 和其他相关对象的 DataConnection 类在一个单独的 CSPROJ 中,下面是一些相关的配置方法:
/// <summary>
/// Creates a new native connection
/// </summary>
protected override IDbConnection CreateNativeConnection()
{
var connection = new SqlConnection(ConnectionString);
return new ProfiledDbConnection(connection, MiniProfiler.Current);
}
/// <summary>
/// Creates a new SQL command
/// </summary>
/// <param name="cmdText">Command text</param>
protected override DbCommand CreateCommand(string cmdText)
{
var command = new SqlCommand(cmdText, null, (SqlTransaction)Transaction);
return new ProfiledDbCommand(command, (DbConnection)NativeConnection, MiniProfiler.Current);
}
/// <summary>
/// Creates a new command parameter
/// </summary>
/// <param name="name">Parameter name</param>
/// <param name="value">Parameter value</param>
protected override DbParameter CreateParameter(string name, object value)
{
return new SqlParameter(name, value);
}
/// <summary>
/// Creates a data adapter
/// </summary>
protected override DbDataAdapter CreateDataAdapter()
{
return new ProfiledDbDataAdapter(new SqlDataAdapter(), MiniProfiler.Current);
}
在 MVC 应用程序的 Global.asax.cs 中:
public MvcApplication()
{
AuthenticateRequest += (sender, e) =>
{
var app = (HttpApplication) sender;
if (Request.IsLocal || app.User != null && app.User.Identity.IsAuthenticated && app.User.Identity.Name == "administrator")
{
MiniProfiler.StartNew();
}
};
EndRequest += (sender, e) =>
{
MiniProfiler.Current?.Stop();
};
}
任何人都可以帮助指导我为什么我可能没有在初始视图中看到它们聚合,或者我可能会从哪里开始收集更多信息?