2010-02-08 123 views
3

我发现堆栈溢出问题描述如何在C#here中备份IIS元数据库,并且我已成功地使用代码here工作。但是,我无法使用C#代码恢复这些备份(或实际上在IIS中手动创建的任何备份)。如何使用C还原IIS元数据库备份#

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

我曾尝试下面的代码,但收到错误

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

“异常已通过调用的目标引发异常”现在虽然我敢肯定,我打电话与方法错误的名称和/或对象的结构,我一直没有找到正确方式任何地方调用它....

任何人都可以请指出我在正确的方向吗?

+0

当你打开的InnerException,你得到了什么HRESULT代码? – Kev 2010-02-08 16:03:05

+0

我得到一个E_INVALIDARG 0x80070057 ....这是否意味着其中一个参数是错误的? – JamesW 2010-02-08 16:19:00

回答

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

太棒了!非常感谢 - 看起来我只需要MD_BACKUP_HIGHEST_VERSION常量:o) – JamesW 2010-02-08 17:32:47

+0

@JamesW - 很高兴工作正常。 – Kev 2010-02-08 18:09:52