9

ASP.NET Core 3 中的一个如何在两台服务器之间共享会话(负载平衡)?会话可以在多个 Web 服务/API 和主 ASP.NET MVC 应用程序之间共享吗?

我对 .NET Core 3 非常陌生,我习惯于在 ASP.NET Framework MVC 中处理会话状态(在此就像在站点的 IIS 配置中使用相同的机器密钥一样简单),但我了解到.NET Core 3 的一切都发生了变化,此外,随着新版本的推出,许多文档都非常过时/过时,.NET Core 1 与更高版本无关,2 与 3 无关,而且它还需要许多 NuGet 包可能会也可能不再起作用。

目前我已经使用 .NET Core 3 成功实现了 SQL 会话存储,但是机器密钥选项不再显示在 IIS 中,我真的不知道如何在appsettings.json文件中配置它们(如果仍然使用的话)。

我们的设置是 2 台服务器,它们都必须共享会话信息,使用 F5 负载均衡器,我们使用 .NET Framework MVC 的旧应用程序配置如下,我需要帮助以实现相同的结果,但使用 .NET Core 3。

我通读了https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/web-farm?view=aspnetcore-3.1但它并没有真正解释如何实际做任何事情

此外,这https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed?view=aspnetcore-3.1帮助配置 SQL 会话存储,但不帮助配置两台服务器之间的共享

以及http://www.intstrings.com/ramivemula/articles/jumpstart-44-sql-server-based-session-state-in-asp-net-core-mvc-application/

4

3 回答 3

1

您是否配置了 DataProtection?我已经有一段时间没有使用它了,但从内存来看,这是分布式会话存储在 .NET Core 中工作的重要部分

以下是关于 .NET Core 中的会话和 DataProtection 的一些额外阅读,其中提到了 MachineKey - https://andrewlock.net/an-introduction-to-the-data-protection-system-in-asp-net-core/

于 2021-06-02T19:21:07.980 回答
0

您用户的会话身份验证密钥存储在其 Web 浏览器中的 cookie 中。无论用户连接到哪个服务器,他们都会将他们的 cookie 传递给该服务器,服务器将使用身份验证密钥通过 SQL 来验证他们的会话。

于 2020-08-26T23:19:13.823 回答
0

我认为这可以帮助你:

分布式 SQL Server 缓存

我从这里得到它: https ://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed?view=aspnetcore-3.1#distributed-sql-server-cache

于 2021-06-09T10:51:19.410 回答