Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何使用Linq到SQL配置mvc迷你探查器?_Asp.net Mvc_Linq_Linq To Sql_Datacontext_Mvc Mini Profiler - Fatal编程技术网

Asp.net mvc 如何使用Linq到SQL配置mvc迷你探查器?

Asp.net mvc 如何使用Linq到SQL配置mvc迷你探查器?,asp.net-mvc,linq,linq-to-sql,datacontext,mvc-mini-profiler,Asp.net Mvc,Linq,Linq To Sql,Datacontext,Mvc Mini Profiler,我已经用asp.net mvc应用程序配置了mini profiler。我还想分析我的数据库,所以我将它与L2S datacontext挂钩,如中所示 对于某些查询,它可以正常工作,但对于其他查询,我发现空引用异常。当我附加源代码进行调试时,我发现 internal void AddSqlTiming(SqlTiming stats) { Head.AddSqlTiming(stats); } 上述方法中的Head属性在第198行的Mi

我已经用asp.net mvc应用程序配置了mini profiler。我还想分析我的数据库,所以我将它与L2S datacontext挂钩,如中所示

对于某些查询,它可以正常工作,但对于其他查询,我发现空引用异常。当我附加源代码进行调试时,我发现

 internal void AddSqlTiming(SqlTiming stats)
        {
            Head.AddSqlTiming(stats);
        }
上述方法中的
Head
属性在第198行的MiniProfiler.cs中为空。知道为什么吗

EDIT:以下方法将返回datacontext对象

public static EvoletDataContext Get() 
        {
            var connection = ProfiledDbConnection.Get(new SqlConnection(ConfigurationManager.ConnectionStrings["evoletworksConnectionString"].ToString()));
            //var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["evoletworksConnectionString"].ToString());
            //return new EvoletDataContext(connection);
            return DataContextUtils.CreateDataContext<EvoletDataContext>(connection);
        }
有关更多详细信息,请参见。我试图在演示项目中重现这个问题,但失败了

编辑2:以下是堆栈跟踪:

[NullReferenceException: Object reference not set to an instance of an object.]
   MvcMiniProfiler.MiniProfiler.AddSqlTiming(SqlTiming stats) in C:\Dev\mvc-mini-profiler\MvcMiniProfiler\MiniProfiler.cs:241
   MvcMiniProfiler.SqlTiming..ctor(DbCommand command, ExecuteType type, MiniProfiler profiler) in C:\Dev\mvc-mini-profiler\MvcMiniProfiler\SqlTiming.cs:66
   MvcMiniProfiler.SqlProfiler.ExecuteStartImpl(DbCommand command, ExecuteType type) in C:\Dev\mvc-mini-profiler\MvcMiniProfiler\SqlProfiler.cs:50
   MvcMiniProfiler.SqlProfilerExtensions.ExecuteStart(SqlProfiler sqlProfiler, DbCommand command, ExecuteType type) in C:\Dev\mvc-mini-profiler\MvcMiniProfiler\SqlProfiler.cs:95
   MvcMiniProfiler.Data.ProfiledDbCommand.ExecuteDbDataReader(CommandBehavior behavior) in C:\Dev\mvc-mini-profiler\MvcMiniProfiler\Data\ProfiledDbCommand.cs:149
   System.Data.Common.DbCommand.ExecuteReader() +12
   System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +724
   System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +189
   System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +659
   System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute(Expression expression) +59
   System.Linq.Queryable.SingleOrDefault(IQueryable`1 source) +265
   UserManagement.Models.FilterRepository.GetModuleHead(String actionName) in D:\Evolet\UserManagement\UserManagement\Models\FilterRepository.cs:14
   UserManagement.Models.DummyAttrib.OnAuthorization(AuthorizationContext filterContext) in D:\Evolet\UserManagement\UserManagement\Models\Filters.cs:30
   Glimpse.Net.Plumbing.GlimpseAuthorizationFilter.OnAuthorization(AuthorizationContext filterContext) +157
   System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor) +149
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +830
   System.Web.Mvc.Controller.ExecuteCore() +135
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +232
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +39
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +68
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +44
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +42
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +140
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +54
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +61
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +31
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +56
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +110
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +690
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +194
[NullReferenceException:对象引用未设置为对象的实例。]
C:\Dev\mvc mini profiler\MvcMiniProfiler\MiniProfiler.cs:241中的MvcMiniProfiler.MiniProfiler.AddSqlTiming(SqlTiming stats)
C:\Dev\mvc mini profiler\MvcMiniProfiler\SqlTiming.cs:66中的MvcMiniProfiler.SqlTiming..ctor(DbCommand命令,ExecuteType,MiniProfiler profiler)
C:\Dev\mvc mini profiler\MvcMiniProfiler\SqlProfiler.ExecuteStartImpl(DbCommand命令,ExecuteType)中的MvcMiniProfiler.SqlProfiler.ExecuteStartImpl:50
C:\Dev\mvc mini profiler\MvcMiniProfiler\SqlProfiler.cs:95中的MvcMiniProfiler.SqlProfiler.ExecuteStart(SqlProfiler-SqlProfiler,DbCommand-command,ExecuteType)
C:\Dev\mvc mini profiler\MvcMiniProfiler\Data\ProfiledDbCommand.ExecuteDbDataReader(CommandBehavior)中的MvcMiniProfiler.Data.ProfiledDbCommand.ExecuteDbDataReader(CommandBehavior)
System.Data.Common.DbCommand.ExecuteReader()+12
System.Data.Linq.SqlClient.SqlProvider.Execute(表达式查询、查询信息查询信息、IOObjectReaderFactory工厂、对象[]parentArgs、对象[]userArgs、ICompiledSubQuery[]子查询、对象lastResult)+724
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(表达式查询、查询信息[]查询信息、IOObjectReaderFactory工厂、对象[]用户参数、ICompiledSubQuery[]子查询)+189
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(表达式查询)+659
System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute(表达式)+59
System.Linq.Queryable.SingleOrDefault(IQueryable`1源代码)+265
D:\Evolet\UserManagement\UserManagement\Models\FilterRepository.cs:14中的UserManagement.Models.FilterRepository.GetModuleHead(字符串actionName)
D:\Evolet\UserManagement\UserManagement\Models\Filters.cs:30中的UserManagement.Models.DummyAttrib.OnAuthorization(AuthorizationContext filterContext)文件
GlimpseAuthorizationFilter.OnAuthorization(AuthorizationContext filterContext)+157
System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext ControllerContext,ILST`1 filters,ActionDescriptor ActionDescriptor)+149
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext ControllerContext,String actionName)+830
System.Web.Mvc.Controller.ExecuteCore()+135
System.Web.Mvc.ControllerBase.Execute(RequestContext)+232
System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext RequestContext)+39
System.Web.Mvc.c__显示类b.b__5()+68
System.Web.Mvc.Async.c__显示类1.b__0()+44
System.Web.Mvc.Async.c_uuudisplayClass8`1.b_uuu7(IAsyncResult)+42
System.Web.Mvc.Async.WrappedAsyncResult`1.End()+140
System.Web.Mvc.Async.asyncResultRapper.End(IAsyncResult asyncResult,对象标记)+54
System.Web.Mvc.Async.asyncResultRapper.End(IAsyncResult asyncResult,对象标记)+40
System.Web.Mvc.c_uuudisplayClasse.b_uuud()+61
System.Web.Mvc.SecurityUtil.b___0(操作f)+31
System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(操作)+56
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+110
System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.EndProcessRequest(IAsyncResult结果)+38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+690
System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)+194

如果您有一个
profileddb连接
,并且实际的探查器设置为空,则通常会发生这种情况

一般来说,如果当前请求未被分析,我们会避免为内部消费者提供
ProfiledDbConnection
。。。这意味着一切都只是稍微快一点

不幸的是,使用EF和L2S有时会很棘手。为了克服这个问题,我刚刚签入了一个变更,允许您使用评测定制对象,即使没有评测器在使用


尽管如此,我的建议仍然是,在不进行分析的情况下,尽可能使用原始连接

看起来这个问题终于在最近的提交中得到了解决:


这里有一些代码示例很有用,完全相同的查询在没有mini profiler的情况下也可以工作?那么,我可以检查
db
是否为非空值吗?和
actionName
?如果这些是非空的,您是否可以从
异常
中包含
堆栈跟踪
,这样我就可以看到它来自何处?是的,没有mini-profiler它的工作。db和actionname也不为null。在我已经包括stacktrace的例外,但我担心图片是相当压缩的,所以只包括文本;P有没有想过直接粘贴文本:哦,有人尝试过最新版本吗?这个问题似乎仍然存在。即使是现在,我也看到了完全相同的行为。我只是从nuget中调出
更新包MiniProfiler
。@ChaseFlorell您需要从google codeah获取最新信息,明白了。。。有没有可能它会成为nuget的一种方式?@ChaseFlorell计划很快发布另一个版本,我们想打破所有的名称空间,因为MVC的东西是误导性的。
[NullReferenceException: Object reference not set to an instance of an object.]
   MvcMiniProfiler.MiniProfiler.AddSqlTiming(SqlTiming stats) in C:\Dev\mvc-mini-profiler\MvcMiniProfiler\MiniProfiler.cs:241
   MvcMiniProfiler.SqlTiming..ctor(DbCommand command, ExecuteType type, MiniProfiler profiler) in C:\Dev\mvc-mini-profiler\MvcMiniProfiler\SqlTiming.cs:66
   MvcMiniProfiler.SqlProfiler.ExecuteStartImpl(DbCommand command, ExecuteType type) in C:\Dev\mvc-mini-profiler\MvcMiniProfiler\SqlProfiler.cs:50
   MvcMiniProfiler.SqlProfilerExtensions.ExecuteStart(SqlProfiler sqlProfiler, DbCommand command, ExecuteType type) in C:\Dev\mvc-mini-profiler\MvcMiniProfiler\SqlProfiler.cs:95
   MvcMiniProfiler.Data.ProfiledDbCommand.ExecuteDbDataReader(CommandBehavior behavior) in C:\Dev\mvc-mini-profiler\MvcMiniProfiler\Data\ProfiledDbCommand.cs:149
   System.Data.Common.DbCommand.ExecuteReader() +12
   System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +724
   System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +189
   System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +659
   System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute(Expression expression) +59
   System.Linq.Queryable.SingleOrDefault(IQueryable`1 source) +265
   UserManagement.Models.FilterRepository.GetModuleHead(String actionName) in D:\Evolet\UserManagement\UserManagement\Models\FilterRepository.cs:14
   UserManagement.Models.DummyAttrib.OnAuthorization(AuthorizationContext filterContext) in D:\Evolet\UserManagement\UserManagement\Models\Filters.cs:30
   Glimpse.Net.Plumbing.GlimpseAuthorizationFilter.OnAuthorization(AuthorizationContext filterContext) +157
   System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor) +149
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +830
   System.Web.Mvc.Controller.ExecuteCore() +135
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +232
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +39
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +68
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +44
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +42
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +140
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +54
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +61
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +31
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +56
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +110
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +690
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +194