首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mvc-mini-profiler

使用mvc-mini-profiler
EN

Stack Overflow用户
提问于 2011-06-09 19:00:21
回答 1查看 2.5K关注 0票数 13

我正在尝试将mvc-mini-profiler与EFCodeFirst一起使用,我正在创建一个DbProfiledConnection并在构造时将其传递给DbContext,如下所示。应用程序继续按照sql的预期工作,而不向Profiler公开。

代码语言:javascript
复制
public class WebContext : DbContext
{
    static DbConnection _connection = new SqlConnection(ConfigurationManager.ConnectionStrings["WebContext"].ConnectionString);
    static DbConnection _profiledConnection = MvcMiniProfiler.Data.ProfiledDbConnection.Get(_connection);        

    public WebContext()
            : base(_profiledConnection, true)
    {   

    }

哦,我的错。

我对它进行了修改,以便在UnitOfWork中构造WebContext时传入一个ProfiledDbConnection

代码语言:javascript
复制
public UnitOfWork()
{             
    var profiledConnection = MvcMiniProfiler.Data.ProfiledDbConnection.Get(connection);
    this.context = new MyContext(profiledConnection);
}

我检查过了,在Application_BeginRequest中设置了MiniProfier Current,当我尝试查询数据库时,它会返回一个ProfiledDbConnection,在ProfiledDbProviderServices类中抛出一个错误。

代码语言:javascript
复制
 protected override string GetDbProviderManifestToken(DbConnection connection)
 {
     return tail.GetProviderManifestToken(connection);
 }

此方法返回“提供程序未返回ProviderManifestToken字符串”。错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-09 19:12:10

我怀疑这与静态字段初始化器有关。web应用程序上的连接永远不应该是静态的(但最多只能是特定于请求的)。

关键是:ProfiledDbConnection到底是什么样子的?仅当您当前正在分析(针对当前请求),并且针对该请求的MiniProfiler实例分析连接时,Get方法才会返回ProfiledDbConnection

如果使用静态字段,则有两种情况:

  • 静态字段是在没有请求上下文(或非开发人员请求上下文)的情况下初始化的:由于MiniProfiler.Current为null
  • 静态字段已初始化,因此不会进行性能分析,但会针对 first请求记录所有内容,该请求很快就会失效
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6291727

复制
相关文章

相似问题

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