如何使用 Miniprofiler 存储支持多 web 实例?

How to use Miniprofiler storage to support multiple web instances?

我已将 Miniprofiler 连接到我的本地 ASP.NET 核心项目,它按预期工作。现在我需要它在托管环境中工作,在该环境中有同一网站的多个实例并且没有粘性会话。据我了解,如果您在配置分析器时仅设置存储选项,则应该支持此功能。但是,设置存储似乎没有任何作用。我这样初始化存储:

var redisConnection = "...";
MiniProfiler.DefaultOptions.Storage = new RedisStorage(redisConnection);
app.UseMiniProfiler();

完成此操作后,我希望我可以打开一个配置文件页面并将结果添加到我的 redis 缓存中。然后我还希望我的网站的一个新实例会列出原始分析结果。但是,在生成新的配置文件结果时,不会向缓存写入任何内容。

为了测试连接,我尝试手动保存一个探查器实例 (storage.Save()) 并将其保存到存储中。但同样,在显示探查器结果时不会加载保存的结果(无论如何,none 我见过的示例要求您这样做)。我感觉我错过了关于存储应该如何工作的一些要点。

事实证明,我认为 MiniProfiler.DefaultOptions.Storage 会被使用的假设是错误的。将我的设置代码更改为以下内容后,它就可以工作了。

// Startup.cs ConfigureServices
var redisConnection = "...";
services.AddMiniProfiler(o =>
{
    o.RouteBasePath = "/profiler";
    o.Storage = new RedisStorage(redisConnection); // This is new
});

// Startup.cs Configure
app.UseMiniProfiler();