gpt4 book ai didi

mysql - ASP.NET Core 与 MySQL 的 session

转载 作者:行者123 更新时间:2023-11-29 17:01:07 24 4
gpt4 key购买 nike

我想在asp.net core中自定义 session 提供程序。即自定义 session 提供程序将使用 MYSQL 数据库而不是 SQL Server 我看到 asp.net core 为我们提供了内置方法 AddDistributedSqlServerCache。但这个方法似乎只适用于SQL Server。

有人可以帮我解决这个问题吗?

最佳答案

我在 .NET 5 或 .NET 6 中有以下工作实现(也代表 .NET Core)

添加nuget包Pomelo.Extensions.Caching.MySql

位于Startup.cs中的ConfigureServices顶部

    services.AddDistributedMySqlCache(options =>
{
options.ConnectionString = <MySQL CnStr with: Allow User Variables=true; >;
options.TableName = "WebUserSessions";
options.SchemaName = <MySQL Database Name>;
});
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(180);
options.Cookie.IsEssential = true;
options.Cookie.HttpOnly = true;
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
options.Cookie.SameSite = SameSiteMode.Strict;
});

在配置方法中app.UseSession();

My SQL 表创建脚本:

CREATE TABLE `webusersessions` (
`Id` varchar(449) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`AbsoluteExpiration` datetime(6) DEFAULT NULL,
`ExpiresAtTime` datetime(6) NOT NULL,
`SlidingExpirationInSeconds` bigint DEFAULT NULL,
`Value` longblob NOT NULL,
PRIMARY KEY (`Id`),
KEY `Index_ExpiresAtTime` (`ExpiresAtTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

现在您的 session 值存储在 MySQL 表“WebUserSessions”中,因此您可以使用单个 mysql 数据库来存储 session ,从多个服务器为您的客户端提供服务。如果您只有一台服务器,您的用户 session 将在 IIS 应用程序池重新启动或 Linux 服务重新启动时保留。

要在不停机的情况下更新.NET core或.NET 6应用程序,请引用我的回答:https://stackoverflow.com/a/66580629/9659885

关于mysql - ASP.NET Core 与 MySQL 的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52253594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com