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

时间:2012-04-13 15:46:29

标签: mvc-mini-profiler

当我点击个人资料的分享链接时,我收到以下异常。我正在使用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)

代码:

我发现我认为代码here中的空引用的来源:

ClientTimings clientTimings = null;
if (clientTimingList.Count > 0)
{
    clientTimings.Timings = clientTimingList;
}

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

解决方法:

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

  • 我找了一种方法来禁用客户端时间,但无法找到它的设置。

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

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

1 个答案:

答案 0 :(得分:2)

看起来这是一个错误。我在github上添加了一张票,并提出了一个拉取请求来修复它:https://github.com/SamSaffron/MiniProfiler/pull/40

新代码如下所示:

if (clientTimingList.Count > 0)
{
    clientTimings = new ClientTimings();
    clientTimings.Timings = clientTimingList;
}