【发布时间】:2014-09-30 09:47:13
【问题描述】:
我想在 WPF-TreeView 控件中显示 IIS 配置。 我的操作系统是 Windows 8.1,我正在用 VS2013 编写 C#。 所以我添加了对 Microsoft.Web.Administration.dll 的引用并编写了以下代码:
using (ServerManager serverManager = new ServerManager())
{
foreach (var site in serverManager.Sites)
{
var siteNode = new TreeViewItem() { Header = string.Format("Site: {0}", site.Name) };
_irv.trvIisInformation.Items.Add(siteNode);
foreach (var application in site.Applications)
{
var appPoolNode = new TreeViewItem() { Header = string.Format("AppPool: {0}, Type: {1}", application.ApplicationPoolName, HoleApplikationstyp(serverManager, application)) };
siteNode.Items.Add(appPoolNode);
foreach (var virtDir in application.VirtualDirectories)
{
appPoolNode.Items.Add(new TreeViewItem() { Header = string.Format("Dir: {0} [{1}]", virtDir.Path, virtDir.PhysicalPath) });
}
}
}
}
创建了 ServerManager 对象,但是当我查看该对象时,我看到了每个示例: ApplicationDefaults = "serverManager.ApplicationDefaults" 引发了“System.Runtime.InteropServices.COMException”类型的异常。
当编译器想要使用 ServerManager 的站点启动 foreach 循环时......
System.Runtime.InteropServices.COMException wurde nicht behandelt。 H结果=-2147221164 Message=Die COM-Klassenfactory für die Komponente mit CLSID {2B72133B-3F5B-4602-8952-803546CE3344} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80040154 Klasse nicht registriert (Ausnahme von HRESULT: 0x8) 源=mscorlib 错误代码=-2147221164 堆栈跟踪: 北 System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType) 北 System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType) bei System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj) bei System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,布尔 publicOnly,布尔 noCheck,布尔& canBeCached,RuntimeMethodHandleInternal& ctor,布尔& bNeedSecurityCheck) bei System.RuntimeType.CreateInstanceSlow(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark和stackMark) bei System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) 北 System.Activator.CreateInstanceT bei Microsoft.Web.Administration.ConfigurationManager.CreateAdminManager[TClass,TInterface](WebConfigurationMap webConfigMap, Boolean isAdminConfig) bei Microsoft.Web.Administration.ConfigurationManager.CreateWritableAdminManager(WebConfigurationMap webConfigMap, String configPathToEdit, Boolean isAdminConfig) bei Microsoft.Web.Administration.ConfigurationManager.CreateConfiguration(WebConfigurationMap configMap, String configPathToEdit, Boolean isAdminConfig) bei Microsoft.Web.Administration.ConfigurationManager.GetConfiguration(String rawConfigurationPath, String cacheKey, Boolean isAdminConfig) 在 Microsoft.Web.Administration.ConfigurationManager.GetApplicationHostConfiguration() 在 Microsoft.Web.Administration.ServerManager.GetApplicationHostConfiguration() 北 Microsoft.Web.Administration.ServerManager.get_SitesSection() 北 Microsoft.Web.Administration.ServerManager.get_Sites()
有人知道该怎么做吗?
提前致谢! 帕特里克
【问题讨论】: