我有一个在服务器 Foo 上的 IIS 6.0 下运行的页面。我还有一些其他站点也在远程服务器 Baz 上的 IIS 6.0 下运行。我想用 ASP.NET 用 Foo 对 Baz 进行 ping 操作,以检索在其上运行的站点列表。我怎样才能做到这一点?
可能像这样,除了在 C# 中而不是 VB 中。
这告诉我,使用 Microsoft.Web.Administration.dll 并不是一个真正的选择,因为它不可分发且仅在 IIS 7 上可用。
这是使用 Microsoft.Web.Administration 获取正在运行的网站列表的代码片段,此 DLL 位于此处:c:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll
class Program
{
static void Main(string[] args)
{
string serverName = "localhost";
using (Microsoft.Web.Administration.ServerManager sm = Microsoft.Web.Administration.ServerManager.OpenRemote(serverName))
{
int counter = 1;
foreach (var site in sm.Sites)
{
Console.Write(String.Format(CultureInfo.InvariantCulture, "Site number {0} : {1}{2}", counter.ToString(), site.Name, Environment.NewLine));
counter++;
}
}
Console.ReadLine();
}
}
将“locahost”替换为远程服务器名称。
希望这适用于 IIS 6(我仅在 IIS 7.5 上尝试过 ;-))
我相信你可以做到这一点System.DirectoryServices
string path = "IIS://{yourservername}/W3SVC";
using (DirectoryEntry w3svc = new DirectoryEntry(path))
{
foreach (DirectoryEntry entry in w3svc.Children)
{
if (entry.SchemaClassName == "IIsWebServer")
{
string websiteName = (string)entry.Properties["ServerComment"].Value;
}
}
}
确保您已在 Baz 上启用远程 IIS 管理