使用 Microsoft.Web.Administration 中的 ServerManager 类时的 COM 异常

Fed*_*jdu 2 .net iis

我正在尝试使用以下代码从 IIS 检索网站:

var serverManager = new ServerManager();

var site = serverManager.Sites.FirstOrDefault(s => s.Name == Config.WebSiteName);
Run Code Online (Sandbox Code Playgroud)

ServerManager类在 中定义Microsoft.Web.Administration,我使用带有复制本地的引用,并且 dll 与应用程序一起部署。

如果我的应用程序在 Win7 64 位上运行,它可以正常工作,但是当我尝试在 Windows XP 32 上运行它时,它会引发异常:

由于以下错误,检索具有 CLSID {2B72133B-3F5B-4602-8952-803546CE3344} 的组件的 COM 类工厂失败:80040154

我将应用程序部署为独立的 winforms .net 3.5 应用程序(为任何 CPU 构建)。

有任何想法吗?

提前致谢。

Rup*_*Rup 6

该错误是REGDB_E_CLASSNOTREG,即它尝试调用的代码在您的 XP 机器上不存在。从文档

提供对 IIS 7 配置系统的读写访问。

Win XP Pro 只有 IIS 6 而不是 7。您必须使用其他一些机制,例如iisweb.vbs、adplus 或它们在幕后使用的 COM 对象。

  • @BSick7 有一个实用程序 err.exe 可以将代码映射到常量。您可以在 Windows SDK 中找到最新版本。我认为也可以使用 Visual Studio(当然 VS6 捆绑了一个应用程序),但我不确定如何。并且通过一些努力,您也可以将其从头文件中挖掘出来,尽管许多像这样的常量是由部分组装而成的,因此可能需要一些努力。 (2认同)