5

当我单击个人资料的共享链接时,出现以下异常。我正在使用来自 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)

编码:

我在这里的代码中找到了我认为是空引用的来源:

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

我是否遗漏了什么,或者当 中有条目时总是会抛出异常clientTimingList

解决方法:

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

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

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

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

4

1 回答 1

2

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

新代码如下所示:

if (clientTimingList.Count > 0)
{
    clientTimings = new ClientTimings();
    clientTimings.Timings = clientTimingList;
}
于 2012-04-17T17:21:27.633 回答