MiniProfiler TimingsHttpContext.Current
默认存储在其中(如您所见)。因此,如果您从为 null 的地方调用 MiniProfiler,HttpContxt.Current
则无法保存结果。解决方案是从其他地方保存(和检索)结果。
MiniProfiler 提供了更改所有结果的存储和检索位置的选项(使用MiniProfiler.Settings.Storage
)。新的v3 MiniProfiler (此处为 beta nuget)提供了IStorage
为每个请求配置不同的选项,以及使用 aMultiStorageProvider
指定可以存储和检索结果的多个位置。您可以在 github 上的Sample.Mvc项目中看到一个示例。
在您的情况下,最好的方法可能是MultiStorageProvider
为您的全局设置一个MiniProfiler.Settings.Storage
,它将首先保存/检索HttpRuntimeCacheStorage
,然后使用其他IStorage
可从DelegatingHandler
. 然后在 中DelegatingHandler
,将 设置MiniProfiler.Current.Storage
为仅使用您在 中设置的第二个存储选项MultiStorageProvider
(因为尝试保存 HttpCache 毫无意义)。在这种情况下,来自的配置文件DelegatingHandler
将保存到您的第二个存储选项中,并将与您的其他结果一起检索以供查看(因为MultiStorageProvider
它将Load
从第一个地方获得结果 - 如果它在 HttpCache 中找不到结果,它将转到第二个选项。
注意 - 在这种情况下,拥有多个存储选项很有用,但它可能会对检索配置文件的性能产生负面影响。