【问题标题】:How to restore an IIS Metabase backup using C#如何使用 C# 还原 IIS 元数据库备份
【发布时间】:2010-02-08 15:33:23
【问题描述】:

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

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

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

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

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

谁能指点我正确的方向?

【问题讨论】:

  • 当你打开 InnerException 时,你会得到什么 HRESULT 代码?
  • 我得到一个 E_INVALIDARG 0x80070057.... 这是否意味着其中一个参数是错误的?

标签: c# iis restore metabase iis-metabase


【解决方案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
  });
}

【讨论】:

  • 太棒了!非常感谢 - 看起来我只需要 MD_BACKUP_HIGHEST_VERSION 常量 :o)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多