Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

asp.net - Retrieve the connection string of an SQL Azure database that is linked to a Windows Azure Web Site with C#.NET

The configuration page of a Windows Azure Web Site has a "connection strings" section. The section lists connection strings for linked resources. How do we programmatically retrieve the connection string for a linked SQL Azure Database?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Solution

Programmatically retrieve the connection string as follows:

connString = 
    Environment.GetEnvironmentVariable("PREFIX_myConnStringName");

Explaination

The Azure connection strings become environmental variables. Documentation explains that Azure creates the variables with the prefixes as follows:

SQL Server: SQLCONNSTR_myConnStringName

MySQL: MYSQLCONNSTR_myConnStringName

SQL Database: SQLAZURECONNSTR_myConnStringName

Custom: CUSTOMCONNSTR_myConnStringName

SQL Azure: SQLAZURECONNSTR_myConnStringName

Knowing that, we can retrieve the desired connection string with the following code:

connString = 
    Environment.GetEnvironmentVariable("SQLAZURECONNSTR_myConnStringName");

Other Option

As another option, this related post about how to access the connection string through web.config as follows:

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

Note: we might not have to include the providerName attribute.

Further Research

We can view all the available environmental variables and connection strings by putting this code into a Razor view. Warning: this will reveal your password!

<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>

That's all for now.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...