如何使用Miniprofiler存储来支持多个Web实例?

Mor*_*sen 6 miniprofiler asp.net-core

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

var redisConnection = "...";
MiniProfiler.DefaultOptions.Storage = new RedisStorage(redisConnection);
app.UseMiniProfiler();
Run Code Online (Sandbox Code Playgroud)

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

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

Mor*_*sen 5

事实证明我的假设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();
Run Code Online (Sandbox Code Playgroud)