我在ASP.NET MVC5网站上使用带有C#的MiniProfiler.Mvc5 v4.2.1。我正在基于源代码库中包含的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();
};
}谁能告诉我为什么我在初始视图中看不到它们,或者我可能会从哪里开始收集更多的信息?
发布于 2020-07-27 05:26:50
我不确定为什么Mini Profiler会这样,因为我不是它的专家。然而,我敢打赌,这是因为Kentico调用在Kentico中使用了自己的DBContext,而您的DataConnection类并不共享与Kentico完全相同的上下文。奇怪的是,您确实在单独的level...But上看到了一些,如果没有更多的源代码共享,就很难区分它们。
但话虽如此,Kentico提供了与Glimpse的自动集成。Kentico的定制版本Glimpse确实显示了SQL计时和许多其他分析选项。请查看我的博客,了解如何使用它。https://www.mcbeev.com/Blog/January-2018/Why-Kentico-Glimpse-is-a-Must-Have-Tool-for-Kentico-MVC-Developers和在https://www.mcbeev.com/Blog/September-2019/KenticoCacheDoctor-2-Now-With-Kentico-Glimpse上添加更多内存调试信息的后续帖子。
在MVC5的世界里,我认为Glimpse仍然是一个可行的选择。
https://stackoverflow.com/questions/62925357
复制相似问题