You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core多站点共用AddDistributedSqlServerCache表及SQL集群配置咨询

关于.NET Core 2.1服务器场迁移的缓存与SQL集群问题

背景与准备步骤

我的.NET Core 2.1网站即将迁移至服务器场以保障维护期间的持续可用,目前已确定需修改以下步骤:

  • services.AddDistributedSqlServerCache()(需重点关注)
  • services.AddDataProtection().PersistKeysToDbContext()
  • services.AddDataProtection().ProtectKeysWithCertificate()
  • 为所有实例设置相同的MachineKey

注:PersistKeysToDbContext()是从dotnet源码实现中反向移植而来。

问题

核心问题

对于AddDistributedSqlServerCache(),多个网站能否共用同一张数据库表?还是每个网站需单独使用一张表?
补充说明:所有网站均受同一OIDC中心登录服务器保护(含该中心登录服务器自身)。

附加问题

若将SQL Server部署为集群以提升高可用性,我的网站本身或连接字符串是否需要修改?集群与单实例的差异对网站是否透明?


解答

分布式SQL缓存表共用问题

多个网站可以共用同一张SQL Server缓存表,但必须通过配置避免键冲突:

  • 配置AddDistributedSqlServerCache时,所有网站指定相同的SchemaName和TableName来共用表;
  • 为每个网站设置唯一的InstanceName,该值会作为缓存键的前缀,确保不同网站的缓存数据相互隔离,不会出现覆盖或读取错误。

由于你的所有网站都受同一OIDC中心保护,共用缓存表能减少数据库维护成本,只要保证InstanceName唯一,就不会出现数据混乱的问题。

SQL Server集群适配问题

SQL Server集群(如Always On可用性组)对.NET Core网站来说基本透明:

  • 代码层面无需修改,数据库访问逻辑和单实例环境完全一致;
  • 连接字符串仅需将原来的单实例地址替换为集群的侦听器名称,这样集群节点切换时,网站会自动连接到可用节点,无需人工干预。

只要集群配置正常(侦听器工作正常、节点同步正常),网站的数据库操作不会受到集群架构的影响。


内容的提问来源于stack exchange,提问作者MilConDoin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:37:43