Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以编程方式连接到IIS 7_C#_.net_Iis_Iis 7_C# 3.0 - Fatal编程技术网

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

C# 如何以编程方式连接到IIS 7,c#,.net,iis,iis-7,c#-3.0,C#,.net,Iis,Iis 7,C# 3.0,我正在尝试以编程方式连接到IIS。我发现网上有大量的例子,但我似乎无法找到任何可行的例子,并且尝试了很多变体 每次我尝试以下代码时,返回的对象的每个属性都有以下错误:…引发了“System.Runtime.InteropServices.COMException”类型的异常 using System.DirectoryServices; String serverName = "serverName"; DirectoryEntry IIS = new DirectoryEntry("IIS

我正在尝试以编程方式连接到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服务器。有人知道我做错了什么吗

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

确保目标服务器上安装了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上的属性列表位于,您还可以运行其他一些不同的查询-只需在MSDN上查找更多信息。

从上面的代码可以看出,我在两次连接尝试中使用了Windows管理员帐户。我的个人帐户也有管理员权限。这是你指的还是你在暗示别的什么?