Como restaurar um backup de metabase do IIS usando C#
-
19-09-2019 - |
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?
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
});
}