Pergunta

Encontrei a pergunta do Stack Overflow descrevendo como fazer backup da metabase do IIS em C# aqui, e tive sucesso em fazer isso funcionar usando o código referenciado aqui. No entanto, estou tendo dificuldade em restaurar esses backups (ou mesmo quaisquer backups criados manualmente no IIS) usando o código C#.

Alguém sabe como fazer isso, ou mesmo que possa ser feito? Não consegui encontrar nenhum exemplo disso na web, ao contrário do próprio backup.

Eu tentei o seguinte código, mas recebo o erro 'Exceção foi jogada pelo alvo de uma invocação'

using (DirectoryEntry localhostIIS = new DirectoryEntry("IIS://LocalHost"))
{
   localhostIIS.Invoke("Restore", new object[] { string.Empty, 0, 0});
}

Agora, embora tenha certeza de que estou chamando o método com o nome errado e/ou estrutura de objeto, não consegui encontrar o correto maneira de chamá -lo em qualquer lugar ....

Alguém pode me apontar na direção certa?

Foi útil?

Solução

Eu tentei isso com um backup nomeado e fiz isso funcionar com alguns ajustes:

const uint MD_BACKUP_HIGHEST_VERSION = 0xfffffffe;
const uint MD_BACKUP_NEXT_VERSION = 0xffffffff;
const uint MD_BACKUP_SAVE_FIRST = 2;

using(DirectoryEntry de = new DirectoryEntry("IIS://Localhost"))
{
  // Backup using the next version number (MD_BACKUP_NEXT_VERSION)
  de.Invoke("Backup", new object[] {
      "test-backup",
      MD_BACKUP_NEXT_VERSION,
      MD_BACKUP_SAVE_FIRST
  });

  // Restore the highest version number (or specify the specific version)
  de.Invoke("Restore", new object[] {
    "test-backup",
    MD_BACKUP_HIGHEST_VERSION,
    0
  });
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top