首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在运行时配置ASP.NET会话状态

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

Stack Overflow用户
提问于 2010-10-19 22:40:23
回答 3查看 5.9K关注 0票数 21

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

代码语言:javascript
复制
<sessionState mode="SQLServer" sqlConnectionString="data source=TheServer;
    User ID=TheUser;password=ThePassword;" cookieless="false" timeout="480"/>

但是有三个环境(开发/试运行/生产)。所有其他连接字符串的配置如下:

代码语言:javascript
复制
<configuration>
    <connectionStrings>
        <add name="Development_Db1" connectionString="..."/>
        <add name="Production_Db1" connectionString="..."/>
    </connectionStrings>
</configuration>

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-23 08:48:55

事实证明,有一种相当简单的方法可以做到这一点。会话状态提供了一种称为Partitioning的功能,您可以在该功能中将状态分散到多个SQL Servers上。您可以提供一个根据会话id (SID)选择SQL Server的函数。诀窍在于,您可以在一台服务器上使用此功能,只需动态选择服务器即可。

web.config配置如下所示:

代码语言:javascript
复制
<sessionState mode="SQLServer" 
              partitionResolverType="YourNamespace.PartitionResolver" 
              cookieless="false" 
              timeout="60" />

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

代码语言:javascript
复制
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进行生产和开发。

票数 20
EN

Stack Overflow用户

发布于 2010-10-20 01:21:57

如上所述,我认为您不应该在web.config中同时拥有开发和生产连接字符串。您可以使用Web部署项目来解决这个问题。可以使用web部署项目来替换基于生成的配置设置。例如,您可以有两个名为connectionStrings.dev.config和connectionStrings.prod.config的外部配置文件。如果你在Debug中构建,它将使用dev.config,但如果你在Release中构建,它将使用prod.config。

它与VS08和VS10略有不同。下面是一些参考:

VS 2008 - http://johnnycoder.com/blog/2010/01/07/deploy-aspnet-web-applications-with-web-deployment-projects/

VS 2010 - http://www.hanselman.com/blog/WebDeploymentMadeAwesomeIfYoureUsingXCopyYoureDoingItWrong.aspx

票数 3
EN

Stack Overflow用户

发布于 2010-10-20 00:04:48

根据本文,您可以自定义会话状态提供程序:

http://www.exforsys.com/tutorials/asp.net-2.0/asp.net-2.0-customizing-the-session-state-mechanism.html

这里的信息可用于设计环境感知会话状态提供程序,该提供程序可以根据.config文件中的配置或其他一些环境键选择连接字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3969528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档