首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不显示MiniProfiler MVC SQL计时

不显示MiniProfiler MVC SQL计时
EN

Stack Overflow用户
提问于 2020-07-16 07:49:41
回答 1查看 166关注 0票数 0

我在ASP.NET MVC5网站上使用带有C#的MiniProfiler.Mvc5 v4.2.1。我正在基于源代码库中包含的Samples.Mvc5项目实现MiniProfiler,并且遇到了显示SQL计时的问题。我很好奇是不是我的设置出了问题,但我不确定是什么原因。

下面是一个加载主页的示例,我很困惑为什么SQL计时和百分比都显示为0.0:

但是,如果我实际单击sql计时,我会得到这个视图,它似乎表明每个SQL调用确实有与之关联的计时:

我用来定义ProfileDbConnection和其他相关对象的DataConnection类在一个单独的CSPROJ中,下面是一些相关的配置方法:

代码语言:javascript
复制
/// <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中:

代码语言:javascript
复制
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();
    };
}

谁能告诉我为什么我在初始视图中看不到它们,或者我可能会从哪里开始收集更多的信息?

EN

回答 1

Stack Overflow用户

发布于 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仍然是一个可行的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62925357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档