从Microsoft.Web.Administration使用ServerManager类时出现COM异常

时间:2012-04-26 12:37:42

标签: .net iis

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

var serverManager = new ServerManager();

var site = serverManager.Sites.FirstOrDefault(s => s.Name == Config.WebSiteName);

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

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

  

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

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

有什么想法吗?

提前致谢。

1 个答案:

答案 0 :(得分:4)

该错误是REGDB_E_CLASSNOTREG,即它试图调用的代码在您的XP机器上不存在。来自the docs

  

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

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