正确的地方有连接字符串

时间:2011-11-11 17:14:14

标签: asp.net azure azure-sql-database

使用与Web Azure数据库通信的Azure Web角色。目前,当我为SQL Azure数据库生成edmx文件时,连接字符串+用户名密码将添加到web.config文件中。我做了一个搜索,有几个关于如何加密web.config /如何使用它在dev和prod之间切换的条目,但我正在考虑将conn字符串移出web.config。

有没有办法将连接字符串移动到服务定义文件?这是推荐的方法吗?如果我将连接字符串移动到其他位置,我仍然可以使用edmx和生成的objectcontext类(因为我现有的代码使用自动生成的实体类)。

2 个答案:

答案 0 :(得分:3)

最好将连接字符串移动到服务配置文件中。这允许您切换到不重新部署的不同SQL Azure数据库。切换到不需要重新部署的不同SQL Azure数据库非常有用,当一个人崩溃或超时并且您准备好备份服务器以切换到其他服务器时。

但是,您需要通过单独提供连接字符串来初始化对象上下文。

使用RoleEnvironment.IsAvailable查看您是否在Azure下运行以及以下代码来读取.cscfg中的设置:

var connectionString = RoleEnvironment.GetConfigurationSettingValue(“ConnectionString”);

答案 1 :(得分:1)

我建议在两个地方都有连接字符串,服务配置文件(.cscfg)和Web.config。从一开始我还建议让您的Web角色能够在Azure环境之外运行。从长远来看,它会影响您的生产力。特别是在日常开发中,您进行小的更改并需要在本地运行项目以进行验证。在IIS,IIS express或Cassini(Asp.net env的代号)中本地运行服务目前比在本地azure仿真器(devFabric)中运行项目更快。 关于存储用户名和密码的第二个问题。这一切都取决于您正在寻找的安全级别。存储在.cscfg中的信息通过https传输,并以与应用程序安全相同的方式保护在Azure云中。话虽这么说,我会将TEST帐户凭据存储在项目中进行测试,并且只会在部署时将.cscfg中的PRODUCTION存储帐户凭据放到公共/生产服务中。