String de conexão diferente para cada perfil de publicação no vs2010
-
28-09-2019 - |
Pergunta
É possível alterar a string de conexão (ou apenas o host do servidor) dependendo do perfil de publicação da web selecionado? Talvez usando Web.config Transform ou de alguma maneira mais?
Quero dizer para o perfil "teste", altere a string de conexão "myconnstring" (no web.config publicado) para "Data Source='example.com,14333;..."
e para o perfil "produção" - para "Data Source=./SQLExpress;..."
Solução
É exatamente para isso que foram criadas transformadas de configuração da web. O link que você forneceu em sua postagem tem um passo a passo de fazer isso especificamente para seqüências de strings de conexão.
Para começar com as transformações, clique com o botão direito do mouse no seu arquivo web.config no Project Explorer e escolha "Adicionar transformadas de configuração". Supondo que você tenha Configa e ConfigB na sua configuração de solução, haverá dois novos arquivos adicionados, web.configa.config e web.configb.config.
Se você abrir esses novos arquivos, eles estarão bem vazios, exceto por vários comentários. Eles realmente contêm um exemplo de string de conexão neles que você pode usar - parece assim:
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
Descubra esta seção e altere a propriedade "Nome" para o nome da string de conexão no arquivo base web.config. Defina a propriedade "ConnectionString" para o valor real que você deseja usar para o Configa. Então, assim:
<connectionStrings>
<add name="myConnectionString"
connectionString="Data Source=ConfigASqlServer;Initial Catalog=ConfigADatabase;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
Repita o processo do arquivo web.configb.config, com a string de conexão desejada para configb.
Agora, quando você usa o comando publicish no Visual Studio, ele transforma automaticamente o arquivo base web.config e defina o atributo "ConnectionString" para qualquer configuração em que você publicar.