当我点击个人资料的分享链接时,我收到以下异常。我正在使用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也有同样的问题。
我找了一种方法来禁用客户端时间,但无法找到它的设置。
也许我可以在数据库中设置一个触发器来删除行,但这似乎有点极端。
如果我有时间,我会得到代码并提交拉取请求。我想先确保我没有遗漏任何明显的东西。
答案 0 :(得分:2)
看起来这是一个错误。我在github上添加了一张票,并提出了一个拉取请求来修复它:https://github.com/SamSaffron/MiniProfiler/pull/40
新代码如下所示:
if (clientTimingList.Count > 0)
{
clientTimings = new ClientTimings();
clientTimings.Timings = clientTimingList;
}