+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 Apr 2026
  1. CeceliaWysel

    5 Pontos

  2. VernonSchaw

    5 Pontos

  3. MargieOsterh

    5 Pontos

200 pontos
Melhores 2026 Apr 06 - 12
  1. danilo.pereira

    96 Pontos

  2. danilo.pereira

    96 Pontos

  3. danilo.pereira

    96 Pontos

  4. willian.metalsystem

    69 Pontos

  5. henrique.muller

    62 Pontos

  6. luciano.fronza

    61 Pontos

  7. luciano.fronza

    61 Pontos

  8. luciano.fronza

    61 Pontos

  9. diuari.molinari

    52 Pontos

  10. diuari.molinari

    51 Pontos

518 perguntas
567 respostas
389 comentários
772 usuários