Dois sites que executam o mesmo código e arquivos de configuração diferentes?

1

Eu tenho um servidor Windows 2008R2 com o IIS, executando um site (ASP.NET4.5). Todos os parâmetros são escritos no arquivo web.config.

Eu tenho que adicionar um novo site, que será executado no mesmo código (mesma pasta raiz) que o primeiro, mas lerá parâmetros como strings de conexão sql, etc. a partir de seu próprio arquivo de configuração, não da primeira web do site. config.

Como posso fazer isso?

É possível executar o segundo site em um pool de aplicativos diferente? Ambos os sites executarão a mesma versão .NET, é claro.

Obrigado!

    
por Gen 25.08.2014 / 10:30

2 respostas

0

Sim. Eu tenho servido exatamente o mesmo código / arquivos de vários AppPools por anos; funciona bem.

Mas todas as instâncias lerão web.config de forma idêntica, uma vez que a funcionalidade padrão da Microsoft não foi escrita para fazer o que você está tentando fazer. Portanto, você terá que implementar sua própria solução personalizada para determinar em qual instância o código está sendo executado e escolher as variáveis de configuração apropriadas com base nisso. Você pode armazenar seus dados de configuração em uma seção de configuração personalizada dentro do web.config (definido em "configSections") ou ter um arquivo .config separado em outro lugar.

O que geralmente faço é mudar o comportamento do código com base no caminho para o aplicativo IIS em execução (ou seja, o caminho). Por exemplo. Se o site estiver sendo exibido em "/ example1", escolho um conjunto de dados de configuração e, se ele é exibido em "/ example2", ele recebe outro conjunto. (Observe que você também desejará manipular a configuração da URL do servidor de desenvolvimento quando estiver executando o site por meio do VisualStudio.)

    
por 11.12.2014 / 05:59
0

Outra solução é manter duas pastas raiz separadas, cada uma com seu próprio web.config, mas criar links para os diretórios / arquivos na outra pasta raiz, para que você só precise manter a origem em um único local.

O Powershell faz algo assim para criar os links da primeira vez:

function mklink { cmd /c mklink $args }

Get-ChildItem "root-source" | Where {($_.PSIsContainer) -band ($_.Name -ne "web.config")} | mklink /d ("root-links-are-here" + $_.Name) $_.FullName

Get-ChildItem "root-source" | Where {(!$_.PSIsContainer) -band ($_.Name -ne "web.config")} | mklink ("root-links-are-here" + $_.Name) $_.FullName
    
por 11.12.2014 / 06:28