在运行时配置 ASP.NET 会话状态

2024-05-03

我们有一个使用 SQL Server 会话状态的 ASP.NET 网站。状态配置在Web.config like:

<sessionState mode="SQLServer" sqlConnectionString="data source=TheServer;
    User ID=TheUser;password=ThePassword;" cookieless="false" timeout="480"/>

但存在三种环境(开发/登台/生产)。所有其他连接字符串的配置如下:

<configuration>
    <connectionStrings>
        <add name="Development_Db1" connectionString="..."/>
        <add name="Production_Db1" connectionString="..."/>
    </connectionStrings>
</configuration>

在运行时,我们根据主机名选择一个连接到数据库。不幸的是,会话状态连接字符串似乎被硬编码在web.config.

有没有办法在运行时配置 SQL Server 会话状态,或者使其引用来自 SQL Server 的连接字符串connectionStrings部分?


事实证明,有一种相当简单的方法可以做到这一点。会话状态提供了一个称为分区 https://web.archive.org/web/20130111000949/http://msdn.microsoft.com/en-us/magazine/cc163730.aspx,您可以在其中将状态分布到多个 SQL Server。您可以提供一个函数来根据会话 ID (SID) 选择 SQL Server。诀窍在于,您可以在一台服务器上使用此功能,只需动态选择服务器即可。

The web.config配置如下:

<sessionState mode="SQLServer" 
              partitionResolverType="YourNamespace.PartitionResolver" 
              cookieless="false" 
              timeout="60" />

选择 SQL Server 的函数如下所示:

public class PartitionResolver : IPartitionResolver
{
    public void Initialize() {}

    // The key is a SID (session identifier)
    public String ResolvePartition(Object key)
    {
        return <grab your config here>;
    }
}

这种方法使我们能够继续使用一个 web.config 进行生产和开发。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在运行时配置 ASP.NET 会话状态 的相关文章

随机推荐

  • 测试 GWT 代码的最佳方法是什么[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • MySQL 查询 - 使用 ORDER BY rand( ) 强制区分大小写

    是否可以强制查询区分大小写 我的听起来是这样的 SELECT g path FROM glyphs WHERE g glyph g glyph ORDER BY rand 如果 g glyph r 结果可以是 R 或 r 这不是我所期望的
  • 选择当前项目 id 周围的 N 个上一个项目和 M 个下一个项目

    我有一张有照片的桌子 id year comm count 0 2015 1 1 2016 2 2 2017 5 3 2018 7 4 2019 1 5 2020 9 6 2021 1 7 2022 1 我选择具有给定 ID 的照片 位于所
  • Javascript 闭包问题

    所以 我仍在阅读 Apress Pro Javascript 技术 但我在闭包方面遇到了麻烦 正如约翰 雷西格所说 闭包允许您引用父函数中存在的变量 然而 它在创建变量时并不提供变量的值 它提供父函数中变量的最后一个值 这是最常见的问题 您
  • font-awesome 字体未加载到 Angular 项目中

    我已经使用 Angular 5 一段时间了 似乎我无法将任何字体很棒的图标加载到我的构建项目中 我完全按照下面链接中提到的步骤进行操作 https www npmjs com package angular font awesome htt
  • Android 计费客户端库:如何指定开发人员有效负载(额外数据)

    我正在尝试使用新的Android计费客户端库 1 0 https developer android com google play billing billing library html 以前 在尝试执行购买时 可以选择向意图添加额外的
  • 计算流数据的直方图 - 在线直方图计算

    我正在寻找一种算法来生成大量流数据的直方图 最大值和最小值事先未知 但标准差和平均值在特定范围内 我很欣赏你的想法 Cheers 我刚刚找到了一个解决方案 秒 从流式并行决策树算法构建在线直方图 论文的 2 2 该算法由 Hive 项目中的
  • 查找系统日志最大消息长度

    大多数 Unix 程序员都会习惯由syslog h 并且许多实现 例如 glibc 对发送给它的 syslog 消息的大小没有真正的限制 但通常对侦听的应用程序有限制 dev log 我想知道是否有人知道如何找到系统日志的最大消息大小 或者
  • 通过 Python 在 PostgreSQL 中的 unicode 字符串中是否允许空字节?

    unicode 字符串中是否允许空字节 我不问 utf8 我的意思是 unicode 字符串的高级对象表示 背景 我们通过 Python 在 PostgreSQL 中存储包含空字节的 unicode 字符串 如果我们再次读取字符串 字符串会
  • 使用PM2时如何配置master进程

    我在 NodeJS 中遇到 PM2 问题 如果没有 PM2 我们总是有如下几行代码来配置主进程 if cluster isMaster master process configuration else worker process con
  • 安装应用程序时复制 SD 卡上的文本文件?

    我正在开发一款安卓游戏 我想在用户第一次安装游戏时将文本文件复制到外部 SD 卡 文本文件对于正确运行游戏非常重要 我怎样才能做到这一点 我应该将文本文件放在 Eclipse 源项目中的哪里 以便当我构建 apk 文件时 我的文本文件也会捆
  • Fat jar 内的 Kotlin JSR-223 ScriptEngineFactory - 找不到 kotlin 编译器 jar

    我有一个胖罐子 我试图在其中获取 Kotlin 的实例ScriptEngine 出于调试目的 我正在迭代可用的脚本引擎工厂并获取引擎 val scriptEngineManager ScriptEngineManager for facto
  • PHP PDO 与 mysql*() 的安全优势

    使用 PHP PDO 代替 mysql connect 等有任何安全优势吗 不会 与 MySQL 扩展相比 PDO 没有任何安全优势 墨菲定律告诉我们的除外 该定律对两者都适用 两者都会通过转义相同的字符来保证输入安全 然而 PDO 还有其
  • 在 Apache 服务器上运行 R Shiny 应用程序

    我有一个闪亮的应用程序 我想在现有的 Apache 服务器上运行 我对服务器完全陌生 不太知道从哪里开始 不幸的是 我在网上找到的大多数资源都是关于 NGINX 而不是 Apache 我知道这样的事情是可能的 但我不知道如何开始 如何开始在
  • Xstream:删除类属性

    我该如何删除类 某事 Xstream 中的属性 我使用带注释的 Xstream 我读了它的代码 发现你的类不是mapper defaultImplementationOf fieldType 它会为你添加默认的类属性 除非类属性名称为nul
  • 如何将 PHP 变量获取到 AJAX?

    我认为我没有在单独的 PHP 和 AJAX 文件之间以正确的方式传递变量 我正在通过触发第二个条件来调试它 status info 在我的 PHP 文件中 现在 status出现为 未定义 alert data status 注册进程 ph
  • 将数组内爆为来自 mysql 查询的逗号分隔字符串

    在过去的 1 1 2 天里 我一直在尝试将 16 行 id 存储到一个字符串中 并用逗号分隔每个 id 我得到的数组来自 MySQL 我得到的错误是 implode 函数 传递了无效参数 str array string while row
  • 为什么WAV格式在不同的浏览器中没有相同的mimetype?

    文件输入在 Chrome 或 Firefox 中为同一文件提供不同的 Mimetype 我有一个我想上传的 wav 文件 chrome 说是audio wav和火狐检测audio x wav 我知道这两个 mimetype 非常相似 x 代
  • 是否可以从转储中覆盖数据库记录?

    我有一个 PostgreSQL 数据库的转储 它是用命令创建的 pg dump database name gt dumpname sql 我想从这个转储中恢复数据库 但我收到很多错误 已经存在 是否可以从转储中覆盖现有数据库记录 我必须恢
  • 在运行时配置 ASP.NET 会话状态

    我们有一个使用 SQL Server 会话状态的 ASP NET 网站 状态配置在Web config like