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)

コード:

ここのコードでnull参照のソースだと思うものを見つけました:

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 に答える