标签: mvc-mini-profiler

使用mvc-mini-profiler和ADO.NET SqlConnection

我正在尝试使用(真棒)mvc-mini-profiler和一些预先存在的SqlConnection存储过程代码(我们不使用EF或L2S,只使用ADO.NET到SQL Server 2008).我正在寻找关于如何将继承ProfiledDb类型集成到这种代码中的一些指导.

var con = new SqlConnection("connectionstring");  
var cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
cmd.CommandText = "SP_STORED_PROCEDURE_NAME";
cmd.Paramters.Add("recordsetid",SqlDbType.UniqueIdentifier).Value = recordsetid;
var dSet = new DataSet();
var da = new SqlDataAdapter(cmd);
da.fill(dSet);
<parse DataSet>
Run Code Online (Sandbox Code Playgroud)

对于我们遗留的ADO.NET用户来说,任何帮助都会很棒,因为从表面上看,SQL分析器应该适用于这种情况

sql-server ado.net mvc-mini-profiler

5
推荐指数
1
解决办法
2259
查看次数

MiniProfilerEF.Initialize()无法正确初始化

我刚开始尝试使用EF4.1在我的MVC3项目中使用mvc-mini-profiler,之后我 MiniProfilerEF.Initialize();改为MiniProfilerEF.Initialize_EF42();:

在"MvcMiniProfiler.Data.EFProfiledOdbcProviderFactory"类型的商店提供程序实例上调用"GetService"方法后返回null.商店提供商可能无法正常运行.

这个方法MiniProfilerEF.Initialize(); - 给了我

给定的程序集名称或代码库无效.(HRESULT异常:0x80131047)

所以我用已经从源手动构建的dll替换了dll.

这可能是什么问题?

entity-framework asp.net-mvc-3 mvc-mini-profiler

5
推荐指数
1
解决办法
672
查看次数

MiniProfiler,EntityFramework代码优先和后台任务nullreference

我首先在我的mvc3项目中使用EF 4.2代码.

miniprofiler工作得很好(sql + mvc),但是我遇到了异步任务的问题.

我用这种方式表演(这个方法好吗?我对此感到有点不安new DatabaseContext())

public static void PerformAsycAction(this User user, Action<User> action)
{
   ThreadPool.QueueUserWorkItem(_ =>
   {
     var context = new DatabaseContext();
     MiniProfilerEF.Initialize();
     var consistantUser = context.Set<User>().Get(user.Id);
     action(consistantUser);
     context.SaveChanges();
   });
}
Run Code Online (Sandbox Code Playgroud)

我在Application_Start中有适当的行:

  protected void Application_Start()
    {
        MiniProfilerEF.Initialize();
        ...
    }
Run Code Online (Sandbox Code Playgroud)

在db的第一个操作期间抛出了一个excpetion,action(consistantUser); 这里是跟踪:

在MvcMiniProfiler.MiniProfiler.AddSqlTiming(SqlTiming stats)中的C:\ Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\MiniProfiler.cs:MvcMiniProfiler.SqlTiming..ctor中的第274行(DbCommand命令,ExecuteType类型,MiniProfiler profiler) )在C:\ Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\SqlTiming.cs:第137行,位于C:\ Users\sam\Desktop\mvc-中的MvcMiniProfiler.SqlProfiler.ExecuteStartImpl(DbCommand命令,ExecuteType类型) mini-profiler\MvcMiniProfiler\SqlProfiler.cs:第39行,位于C:\ Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\SqlProfiler.cs中的MvcMiniProfiler.SqlProfilerExtensions.ExecuteStart(SqlProfiler sqlProfiler,DbCommand命令,ExecuteType类型):位于MvcMiniProfiler的C:\ Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\MiniProfiler.IDbProfiler.cs:第14行的MvcMiniProfiler.MiniProfiler.MvcMiniProfiler.Data.IDbProfiler.ExecuteStart(DbCommand profiledDbCommand,ExecuteType executeType)第93行. Data.ProfiledDbCommand.ExecuteDbDataReader(CommandBehavior behavior)in C:\ Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\Data\ProfiledDbCommand.cs:System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands上System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)的第158行( EntityCommand entityCommand,CommandBehavior行为)

我究竟做错了什么?任何帮助将不胜感激.

编辑:我尝试再次初始化MiniProfiler(MiniProfilerEF.Initialize();),在执行backgroung任务的线程中(在启动DatabaseContext之前),现在还有另一个例外:

无法将"MvcMiniProfiler.Data.EFProfiledDbConnection"类型的对象强制转换为"System.Data.SqlClient.SqlConnection"类型

实际上,在后台线程中对查询进行概要分析并不是必需的,但它会导致整个线程崩溃,因此应用程序无法正常工作,我不得不讨论整个分析器.有没有办法为它,后台,线程禁用它以防止它崩溃?

c# asp.net-mvc entity-framework mvc-mini-profiler

5
推荐指数
1
解决办法
914
查看次数

由于客户端计时,SqlServerStorage.LoadInBatch()函数中的MiniProfiler NullReferenceException

当我点击个人资料的分享链接时,我收到以下异常.我正在使用NuGet的最新版本,2.0.1.

例外情况:

System.NullReferenceException: Object reference not set to an instance of an object.
   at StackExchange.Profiling.Storage.SqlServerStorage.LoadInBatch(DbConnection conn, Object idParameter) in C:\Users\sam\Desktop\MiniProfiler\StackExchange.Profiling\Storage\SqlServerStorage.cs:line 348    
   at StackExchange.Profiling.Storage.SqlServerStorage.Load(Guid id) in C:\Users\sam\Desktop\MiniProfiler\StackExchange.Profiling\Storage\SqlServerStorage.cs:line 297 
   at StackExchange.Profiling.UI.MiniProfilerHandler.Results(HttpContext context) in C:\Users\sam\Desktop\MiniProfiler\StackExchange.Profiling\UI\MiniProfilerHandler.cs:line 314 
   at StackExchange.Profiling.UI.MiniProfilerHandler.ProcessRequest(HttpContext context) in C:\Users\sam\Desktop\MiniProfiler\StackExchange.Profiling\UI\MiniProfilerHandler.cs:line 188 
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud)

代码:

我发现,我认为是在代码中的空引用的来源在这里:

ClientTimings clientTimings = null;
if (clientTimingList.Count > 0)
{
    clientTimings.Timings = clientTimingList;
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么,或者当有条目时总是会抛出异常clientTimingList

解决方法:

  • 我想也许如果我禁用批处理,我不会运行LoadInBatch函数,但LoadIndividually有同样的问题.

  • 我找了一种方法来禁用客户端计时,但找不到它的设置.

  • 也许我可以在数据库中设置一个触发器来删除行,但这似乎有点极端.

如果我有时间,我会得到代码并提交拉取请求.我想先确保我没有遗漏任何明显的东西.

mvc-mini-profiler

5
推荐指数
1
解决办法
650
查看次数

查找:DisplayTemplates速度

我在一个新的MVC4站点上安装了Mini-Profiler,并注意到某些Find: DisplayTemplates包括String和DateTime在内的大量等待时间.以下是一个例子.在另一个问题中,Sam Saffron谈到了寻找步骤

在随后的运行中它很快(除非你有一些非常糟糕的事情发生)

但是每个页面加载都会发生以下情况:

http://localhost:80/SLS.Site/s/hogwarts/lunch...     2.6    +0.0
  Check School Permissions                           2.4    +2.0     1 sql   0.9
  Controller: SchoolAdmin.LunchGroupsController...   4.0    +4.5
  Find: Index                                        0.4    +8.6
  Render : Index                                    70.0    +9.1     2 sql   13.0
   Controller: SchoolAdmin.LunchGroupsController...  2.6    +12.3
   Find: BuildingTree                                0.4    +14.9
   Render partial: BuildingTree                      4.4    +15.4    1 sql   3.2
   Controller: SchoolAdmin.LunchGroupsController...  3.3    +20.2
   Find: Teachers                                    0.6    +23.6
   Render partial: Teachers                          4.3    +24.3    1 sql   2.4
   Find: DisplayTemplates/String                   409.3    +31.9
   Render partial: _UserContext                      0.0    +441.3
   Find: _LoginPartial                               1.2    +441.4
   Render …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc mvc-mini-profiler

5
推荐指数
1
解决办法
841
查看次数

在mvc mini profiler中限制HttpRuntime缓存存储

  1. 我相信mvc mini profiler会将所有响应时间存储在HttpRuntime缓存中.
    如果我错了请告诉我,但如果是这样的话,那么这个缓存的最大限制是多少?在缓存已满之前,它可以分析多少个操作?我们使用迷你探查器来分析测试套件的操作,测试套件会随着时间的推移而增长,所以我很担心这个问题.我应该担心吗?

  2. 在相关的说明.当所有测试都被分析后,我只需在迷你探查器的类中调用该Save方法SqlServerStorage.并且所有响应时间都保存到SQL Server数据库中.有没有什么方法可以Save更频繁地调用该方法而无需一次又一次地启动和停止探查器?我们只是在测试套件的开头启动它,并在所有测试都被分析后结束它.我们将该MiniProfilers表的一个条目视为一个分析会话.现在我不能多次调用'Save'方法,因为MiniProfilerId每次调用它都需要一个新的方法.

有什么建议?

c# mvc-mini-profiler mvcminiprofiler

5
推荐指数
1
解决办法
499
查看次数

使用MiniProfiler的Step()IDisposable添加多少开销?

我想不时使用MiniProfiler来分析我的代码,但我不想分支并继续重新引入它; 我想把它留在那里,@MiniProfiler.RenderIncludes()当我不使用它时,只是从我的布局模板中删除调用.但是,我的代码仍然如下所示:

using (MiniProfiler.Current.Step("Generate events index view model")) {
    _thisStep = MiniProfiler.Current.Step("Check query string");
    int pageIndex = 0;
    // Do check...
    _thisStep.Dispose();

    // Do other stuff...
}
Run Code Online (Sandbox Code Playgroud)

将这些Steps留在那里并处理它们需要多少开销?有没有办法告诉MiniProfiler我没有使用它,所以Step基本上什么也没做,但我仍然可以把它留在我的代码中?

performance mvc-mini-profiler

5
推荐指数
1
解决办法
959
查看次数

让SqlBulkCopy在MiniProfiler中显示为sql

我正在使用MiniProfiler来配置我的sql命令.

我正在处理的一个问题是由linq生成的重复INSERT语句.

我已将它们转换为SqlBulkCopy命令,但现在它似乎没有将它记录在MiniProfiler的sql视图中.

是否会为SqlBulkCopy提供相关的命令字符串?

是否可以将批量副本显示在sql命令列表中?

我至少可以在%sql位中计算它吗?


我知道我可以使用MiniProfiler.Current.Step("Doing Bulk Copy")但不会算作SQL,并且不会在列表中显示任何细节.


目前的代码如下:

public static void BulkInsertAll<T>(this DataContext dc, IEnumerable<T> entities)
{
    var conn = (dc.Connection as ProfiledDbConnection).InnerConnection as SqlConnection;
    conn.Open();

    Type t = typeof(T);

    var tableAttribute = (TableAttribute)t.GetCustomAttributes(
        typeof(TableAttribute), false).Single();
    var bulkCopy = new SqlBulkCopy(conn)
    {
        DestinationTableName = tableAttribute.Name
    };

    //....

    bulkCopy.WriteToServer(table);
}
Run Code Online (Sandbox Code Playgroud)

c# sqlbulkcopy mvc-mini-profiler

5
推荐指数
1
解决办法
618
查看次数

Asp.net MVC MiniProfiler"请求在此上下文中不可用"

我正在尝试将MiniProfiler用于使用Oracle DB的MVC应用程序.这是我的global.asax.

protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();    
        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);            
         MiniProfiler.Start(); //or any number of other checks, up to you 

    }
    protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
    {
        DevExpressHelper.Theme = "Metropolis";
        MiniProfiler.Stop(); //stop as early as you can, even earlier with MvcMiniProfiler.MiniProfiler.Stop(discardResults: true);

    }
Run Code Online (Sandbox Code Playgroud)

申请开始时,我得到:

"请求在此上下文中不可用"

asp.net asp.net-mvc mvc-mini-profiler

5
推荐指数
1
解决办法
774
查看次数

MiniProfiler和Web API 2

我有两个独立的项目"MyWeb"和"MyAPI",MyWEB是一个单页的站点,有一个控制器和一个视图,它基于淘汰MVVM和ajax请求到MyAPI Web应用程序,这两个项目包含在不同的apppools.我已经将MiniProfiler与MyWEB网站集成在一起并且运行良好,但我只能看到主页的首次加载结果,然后所有数据都从MyAPI网络应用加载.所以,我需要将MiniProfiler与MyAPI项目集成,我有能力在MyWEB网站的页面上看到miniprofiler结果.我知道MiniProfiler发送ajax请求获取结果,但我不明白为什么这个请求只能在同一个域上工作.例如,MyWEB在domaint http://mywebsite.com,我向域中的MyAPI发送请求http://mywebapi.com/api,这两个项目也可以放在两台不同的计算机上.那么,我现在所拥有的

MyWEB global.asax

public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            MiniProfilerEF6.Initialize();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AreaRegistration.RegisterAllAreas();
        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }

        protected void Application_EndRequest()
        {

        }
    }
Run Code Online (Sandbox Code Playgroud)

MyAPI global.asax

public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            MiniProfilerEF6.Initialize();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            AreaRegistration.RegisterAllAreas();
        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            if (Request.IsLocal)
            {
                MiniProfiler.Start();
            }
        }

        protected void Application_EndRequest()
        {
            MiniProfiler.Stop();
        }
    }
Run Code Online (Sandbox Code Playgroud)

MyAPI web.config处理程序

<handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" …
Run Code Online (Sandbox Code Playgroud)

asp.net ajax mvc-mini-profiler asp.net-mvc-4 asp.net-web-api

5
推荐指数
0
解决办法
1235
查看次数