使用C#.NET检索连接到Windows Azure网站的SQL Azure数据库的连接字符串

4

Windows Azure网站的配置页面有一个“连接字符串”部分。该部分列出了链接资源的连接字符串。我们如何以编程方式检索链接的SQL Azure数据库的连接字符串?

2个回答

8

解决方案

按照以下方式以编程方式检索连接字符串:

connString = 
    Environment.GetEnvironmentVariable("PREFIX_myConnStringName");

说明

Azure连接字符串变成环境变量。文档解释了Azure如何创建带有前缀的变量:

SQL Server: SQLCONNSTR_myConnStringName

MySQL: MYSQLCONNSTR_myConnStringName

SQL Database: SQLAZURECONNSTR_myConnStringName

Custom: CUSTOMCONNSTR_myConnStringName

SQL Azure: SQLAZURECONNSTR_myConnStringName

有了这个知识,我们可以使用以下代码检索所需的连接字符串:

connString = 
    Environment.GetEnvironmentVariable("SQLAZURECONNSTR_myConnStringName");

其他选项

作为另一个选项,这篇相关文章介绍了如何通过web.config访问连接字符串:

<add name="myConnStringName" 
    connectionString="you can leave this blank"
    providerName="System.Data.SqlClient" />  

注意:我们可能不需要包含providerName属性。
进一步研究
我们可以通过将此代码放入 Razor 视图中来查看所有可用的环境变量和连接字符串。警告:这将揭示您的密码!
<ul>
    @foreach (System.Collections.DictionaryEntry ev in Environment.GetEnvironmentVariables())
    {
        if (ev.Value.ToString().ToLower().Contains("data source"))
        {
            <li><strong>@ev.Key.ToString()</strong> @ev.Value.ToString()</li>
        }
    }
</ul>

<ul>
    @foreach (System.Configuration.ConnectionStringSettings cs in System.Configuration.ConfigurationManager.ConnectionStrings)
    {
        <li><strong>@cs.Name</strong> @cs.ConnectionString</li>
    }
</ul>

现在就这些。


关于您的“其他选项”:如果我在web.config文件中包含那个片段,我如何能够本地调试我的应用程序?我之所以问这个问题,是因为在这种情况下,连接字符串除了在 Azure 上之外永远不会被指定。 - Zizzipupp

0
以环境变量的方式获取连接字符串似乎不太妥当。你应该将其定义在连接字符串下,然后只需从IConfiguration接口调用GetConnectionString方法,而不要使其更加复杂并给其添加数据库前缀。
尝试下面的方法,这会使事情变得更简单。
IConfiguration config = new ConfigurationBuilder()
    .AddEnvironmentVariables()
    .Build();

var connection = _config.GetConnectionString("DatabaseConnection");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接