繁体   English   中英

如何以编程方式连接到IIS 7

[英]How to programmatically connect to IIS 7

我正在尝试以编程方式连接到IIS。 我发现在线上有大量示例,但是我似乎无济于事,并且尝试了很多变体

每当我尝试以下代码时,返回的对象的每个属性都会出现此错误:...“引发了类型为'System.Runtime.InteropServices.COMException'的异常”

using System.DirectoryServices;

String serverName = "serverName";

DirectoryEntry IIS = new DirectoryEntry("IIS://" + serverName + "/W3SVC");
IIS = new DirectoryEntry("IIS://" + serverName + "/W3SVC", "administrator", "mypassword");
IIS = new DirectoryEntry("IIS://" + serverName + "/W3SVC/1/ROOT", "administrator", "mypassword");

我正在使用Windows目录用户帐户,并且有很多在IIS上运行的网站。 我正在Windows XP开发计算机上尝试使用IIS 7连接到Windows 2008 Server上的这段代码。有人知道我在做什么错吗?

您的帐户可能没有对包装IIS调用的COM对象的启动权限。 您可能需要尝试将自己添加到承载IIS的框上的admin组中,以使其正常工作。

确保在目标服务器上安装了IIS6管理兼容性功能-如果没有它,则无法通过IIS7上的ADSI进行远程管理。

确保在客户端计算机上安装了IIS-如果未安装程序,程序将引发System.Runtime.InteropServices.COMException。

当您也在远程计算机上查看IIS时,这很重要,运行您的应用程序的计算机也将需要IIS。

编辑:另外,我最近发现了一个专门用于连接和配置IIS7的程序集-Microsoft.Web.Administration。 值得一看的是,您是否可以访问此文件(或可以获取访问权限,无论如何它都应该在装有IIS7的计算机上),然后看看它可以做什么。 恐怕我自己还没有使用过它,所以我无法告诉您它是否可以满足您的要求,但这是您可以研究的另一种选择。

最后,还有System.Management和WMI脚本选项。

Dim scope As New Management.ManagementScope("\\" & server & "\root\MicrosoftIISv2")
scope.Connect()

Dim query As New Management.ObjectQuery("select * from IISWebVirtualDirSetting")
Dim searcher As New Management.ManagementObjectSearcher(scope, query)
For Each obj As Management.ManagementObject In searcher.Get()
    DoSomethingWith(obj)
Next

obj上的属性列表位于http://msdn.microsoft.com/zh-cn/library/ms525005.aspx ,您还可以运行更多不同的查询-只需在MSDN上挖掘更多即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM