+5 votos
54 visitas
No Saúde temos a situação onde liberamos serviços aos clientes (WES 2006 e WES 13) cujos endpoints e behaviors precisam ser acrescentados no web.config do NonAuthenticatedServiceHost. A dificuldade é que hoje esta edição é manual e pode invalidar o web.config causando prejuízos ao funcionamento dos serviços.

Existe algum método automatizado para realizar estas alterações e que possamos usar para remover o elemento humano e eliminar os erros?
por (138 pontos)
reclassificado por | 54 visitas

1 Resposta

+5 votos
Melhor resposta

Olá Ricardo.

Também temos este cenário na Tecnologia pois em atualizações de versão não substituímos o arquivo em um ambiente já configurado. Criamos na Tecnologia um recurso de Migração de Web.Config, inclusive a intenção é fornecer para os sistemas este mesmo mecanismo para que vocês possam fazer a migração de suas alterações.

O mecanismo basicamente registra nos AppSettings do web.config uma nova informação "webConfigVersion" que é a versão do web.config de Tecnologia. Ao subir o aplicativo esse valor é verificado e caso esteja em versão inferior à atual aplicamos via código alterações no web.config. Neste mecanismo temos vários métodos utilitários que ajudam na manipulação do web.config para ajustá-lo via programação. Já estamos usando isso em algumas versões e tem facilitado muito além de garantir a consistencia do ambiente.

Abri a SMS 786988 no Backlog do WES para avaliarmos quando podemos liberar isso e o que é necessário fazer, mas acredito que seja pouco trabalho.

A titulo de exemplo, a seguir um trecho do código de migração:

       

protected override string OnUpgrade(string currentVersion)
{
      int version = Convert.ToInt32(currentVersion);

      CheckApplyVersionWebConfig(WesWebConfigMigratorToVersion1.Upgrade, 1, ref version);
      CheckApplyVersionWebConfig(UpdateToVersion2, 2, ref version);
      CheckApplyVersionWebConfig(UpdateToVersion3, 3, ref version);
      // ....
}

private void UpdateToVersion4(XDocument document)
{
    var xSection = document.Root.EnsureElement("system.webServer");
    var handlers = xSection.EnsureElement("handlers");

    HttpHandler handlerToAdd = new HttpHandler();
    handlerToAdd.Name = "CustomArtifactHandler";
    handlerToAdd.Verb = "GET";
    handlerToAdd.Path = "favicon.ico";
    handlerToAdd.ClassName = "Benner.Tecnologia.Wes.Components.CustomArtifactsHandler";
    handlerToAdd.AssemblyName = "Benner.Tecnologia.Wes.Components";

    //...

}

 

por (255 pontos)
editado por
Obrigado pelo retorno, Rafael. Vamos aguardar a liberação desta alteração. Se possível, quando tiver a data definida, me avise por favor.
Melhores Aug 2025
    200 pontos
    Melhores 2025 Jul 28 - Aug 03
    1. Larson

      156 Pontos

    2. danilo.pereira

      96 Pontos

    3. danilo.pereira

      96 Pontos

    4. danilo.pereira

      96 Pontos

    5. luciano.fronza

      61 Pontos

    6. luciano.fronza

      61 Pontos

    7. luciano.fronza

      61 Pontos

    8. diuari.molinari

      52 Pontos

    9. diuari.molinari

      51 Pontos

    10. diuari.molinari

      51 Pontos

    517 perguntas
    566 respostas
    389 comentários
    704 usuários