Armazenando Strings de Conexão

É muito fácil armazenar a string de conexão em um arquivo de configuração e há vários benefícios ao fazer isso. Este artigo descreve por que e como armazenar a string de conexão em web.config no ASP.NET Framework e em appsettings.json no ASP.NET Core.

ASP.NET Framework

String de Conexão em arquivo de configuração do .NET

Não use a seção appSettings em web.config. Em vez disso, use a seção connectionStrings em web.config.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <connectionStrings>
        <add name="myConnectionString" connectionString="server=localhost;database=BancoDeDados;uid=Usuario;password=Senha;" />
    </connectionStrings>
</configuration>  

Para ler a string de conexão no código, use a classe ConfigurationManager.

string connStr = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;

Lembre-se de adicionar uma referência ao componente System.Configuration. Em seguida, inclua o namespace System.Configuration para acessar a classe ConfigurationManager.

// C#
using System.Configuration;

// VB.Net
imports System.Configuration

Limpar strings de conexão provenientes de arquivos de configuração de nível superior

Os arquivos de configuração são hierárquicos, sendo o machine.config o de nível mais alto. Você pode limpar strings de conexão definidas anteriormente na hierarquia para garantir que nenhuma configuração indesejada seja repassada para o seu valor desejado.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <connectionStrings>
        <clear />
        <add name="myConnectionString" connectionString="server=localhost;database=BancoDeDados;uid=Usuario;password=Senha;" />
    </connectionStrings>
</configuration>

Adicionar <clear /> no topo da seção connectionStrings é geralmente uma boa prática para garantir que nenhuma outra string de conexão seja repassada de um arquivo de configuração de nível superior.

String de Conexão antes do arquivo de configuração do .NET 2.0

Use estas informações apenas para aplicações .NET 1.0 e .NET 1.1 antigas. No local appSettings, adicione uma chave com o nome que desejar para referenciar sua string de conexão.

<appSettings>
    <add key="myConnectionString" value="server=localhost;database=BancoDeDados;uid=Usuario;password=Senha;" />
</appSettings>

Para ler a string de conexão do código, use a classe ConfigurationSettings.

string connStr = ConfigurationSettings.AppSettings("myConnectionString");

ASP.NET Core

String de Conexão em appsettings.json

No ASP.NET Core, a string de conexão é geralmente armazenada no arquivo appsettings.json.

{
  "ConnectionStrings": {
    "myConnectionString": "Server=localhost;Database=BancoDeDados;User Id=Usuario;Password=Senha;"
  }
}

Para acessar a string de conexão no código, é comum injetar a interface IConfiguration e utilizar o método GetConnectionString.

// Startup.cs
public class Startup
{
    public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<MyContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("myConnectionString")));
    }
}

// MyContext.cs
public class MyContext : DbContext
{
    public MyContext(DbContextOptions<MyContext> options) : base(options) { }
}

Resumo

Sempre armazene a string de conexão em um arquivo de configuração. Não é mais difícil quando você se acostuma e você se beneficiará disso, pois é muito mais fácil alterar as propriedades da string de conexão quando sua aplicação estiver em produção.

Se você armazenar dados de conexão com banco de dados em arquivos diferentes de web.config ou appsettings.json, certifique-se de que estes arquivos não podem ser lidos via web.