2011-11-11 27 views
3

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

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

回答

3

最好将连接字符串移动到服务配置文件中。这使您可以切换到另一个不重新部署的SQL Azure数据库。当一个已经崩溃或正在超时并且在不同的服务器上准备好备份以切换到另一个服务器时,切换到另一个不重新部署的SQL Azure数据库非常有用。

但是,您需要分别提供连接字符串来初始化对象上下文。

使用RoleEnvironment.IsAvailable找出如果你天青下运行和下面的代码读取.cscfg设置:

VAR的connectionString = RoleEnvironment.GetConfigurationSettingValue(“ConnectionString的”);

+0

当visual studio生成edmx文件时,它也会添加一个实体连接字符串。我应该从web.config中删除它吗?我仍然能够使用自动生成的对象上下文,并只传递一个字符串给它的构造函数吗?任何指向示例代码的指针都会很棒...... – user529265

+0

另外,我是否应该将用户名和密码存储在cscfg文件中?应该/可以加密吗? – user529265

+1

您不需要将连接字符串存储在web.config中,除非您在没有Azure模拟器的情况下进行测试。查看关于.config&.cscfg文件管理的博客条目,以了解我在Azure中更喜欢如何管理环境。http://www.paraleap.com/blog/post/Managing-environments-in-a-分布式Azure的或基于其他云 - -NET-solution.aspx – Igorek

1

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