【问题标题】:ASP.NET Core session with MySQL与 MySQL 的 ASP.NET Core 会话
【发布时间】:2022-01-19 15:03:34
【问题描述】:

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

谁能帮我解决这个问题?

【问题讨论】:

  • 我对 PostgreSQL 也有同样的疑问

标签: mysql .net-core


【解决方案1】:

我在 .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;

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

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

【讨论】:

    【解决方案2】:

    试试这个 NuGet 包吧....

    Pomelo.Extensions.Caching.MySql

    或者这个用于 Postgresql....

    Community.Microsoft.Extensions.Caching.PostgreSQL

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      • 2019-03-11
      • 2017-01-21
      • 2017-07-09
      • 2017-05-05
      • 2020-10-15
      • 2020-01-19
      相关资源
      最近更新 更多