在Global.asax中更改Web.config会话值?

时间:2014-08-18 17:12:32

标签: asp.net asp.net-mvc

我们将会话数据存储在数据库中,理想情况下,每个开发人员都希望在自己的PC上使用会话数据库,或者可能是1个开发人员可能使用inproc,另一个是mssql连接,另一个是Oracle(如果我们使用它)

这可能吗?您可以在代码中访问会话密钥并在应用程序启动时更改它吗?或者是否有一个文件可以与web.config文件合并而无法检入?

或选项C更容易,但我没有想到: - )

感谢

(编辑)刚刚发现了这个细节 developer specific app.config/web.config files in Visual Studio

(回答)。这来自评论中的Andrew Barber和上面的

(1)在web.config中有这个

<sessionState configSource="SystemWeb.config" />

(2)创建一个名为SystemWebDefault.config的文件,其中包含以下内容:

<sessionState mode="SQLServer" allowCustomSqlDatabase="true" etc

(3)每个开发人员必须将默认值复制到名为SystemWeb.config的文件中,并将其更改为适合自己。应该在subversion或您使用的任何源控制系统中明确忽略此文件。

(4)构建框需要复制步骤

1 个答案:

答案 0 :(得分:0)

可能做你想要的东西是NConfig(NuGet link)。我在项目上使用它,让我们团队中的多个开发人员为他们的本地数据库副本提供不同的连接字符串。它允许您定义特定于计算机的配置文件以替换您的默认配置值。例如,您可以定义一个{MachineName} .Custom.config,它可能如下所示:

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="main" connectionString="data source=(local)\SQLExpress;uid=username;pwd=password;initial catalog=mydb" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

我从未尝试使用会话设置,但我找不到任何说它不起作用的内容。