zl程序教程

您现在的位置是:首页 >  其他

当前栏目

用于IIS 8的Microsoft.Web.Administration不显示所有站点

2023-04-18 12:51:33 时间

我想在简单的C#控制台应用程序中显示IIS 8中的所有站点(这只是一个秒杀,我最终会在一个asp.net MVC中执行此操作4申请)。用于IIS 8的Microsoft.Web.Administration不显示所有站点

我将Microsoft.Web.Administration dll(从C: Windows System32 inetsrv)复制到 References并从那里引用它。

我的服务器上,有3个站点:

  • 默认Web站点
  • 的WebDAV
  • 炽热

我做下面列出所有的网站:

static void Main(string[] args) 
    { 
     using (ServerManager serverManager = new ServerManager()) 
     { 
      try 
      { 
       if (serverManager != null) 
       { 
        Console.WriteLine(serverManager.Sites.ToString()); 
        foreach (Site site in serverManager.Sites) 
        { 
         Console.WriteLine(site.Name); 
         Console.Read(); 
        } 
       } 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e.Message); 
       Console.Read(); 
      } 
     } 
    } 

问题是临时T,当我在服务器上运行它,它只是显示

默认Web站点

我跑

appcmd list site 

,并得到所有三个。

尽管如此,我真的很想使用Microsoft.Web.Administration,因为它似乎比从C#应用程序运行带有appcmd的命令行更好。

请分享您的见解,了解可能发生的原因。 谢谢。

nestedloop

对不起,如果这是一个愚蠢的问题,但你有你的console.read()在循环中,所以你会暂停输入后的第一个writeline。如果您然后键入一个键,然后按回车将结束您的应用程序。因为它会读取字符+ char(13)+ char(10)。只要确保将其移到循环之外即可。 –

@DavidMartin哇。我现在感到很蠢。我在昨天的参考文献中遇到了一些其他的问题,并且我解决了它们,但同时又添加了这个循环,而且似乎忘记了read()。这很愚蠢,谢谢指出它(甚至没有想过检查这个:()。 –

回答

大卫在他的评论中指出,我犯了一个愚蠢的错误,我没有注意到。我发布这个答案是为了从未答复的列表中删除问题。

这个错误是

Console.Read() 

在foreach内。

nestedloop

用于IIS 8的Microsoft.Web.Administration不显示所有站点