如何使用C#还原IIS元数据库备份

时间:2010-02-08 15:33:24

标签: c# iis restore metabase iis-metabase

我发现Stack Overflow问题描述了如何在C#here中备份IIS元数据库,并且我已经成功地使用引用here的代码来实现它。但是,我很难使用C#代码恢复这些备份(或者实际上在IIS中手动创建的任何备份)。

有谁知道如何做到这一点,或者即使可以做到这一点?与备份本身不同,我无法在网上找到任何此类示例。

我尝试过以下代码,但收到错误'调用目标已抛出异常

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

现在虽然我确定我使用错误的名称和/或对象结构调用方法,但我无法找到正确的方式在任何地方调用它。 ..

有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

我尝试使用命名备份,并通过一些调整来实现:

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
  });
}