C# ServerManager如何查找给定站点的状态

C# ServerManager如何查找给定站点的状态,c#,iis,configuration,iis-7.5,servermanager,C#,Iis,Configuration,Iis 7.5,Servermanager,我正在尝试使用Servermanager读取站点的状态。基本上这就是我所拥有的 var serverManager = new ServerManager(siteInstance.Server.ConfigPath); var site = serverManager.Sites.FirstOrDefault(x => x.Id == Convert.ToInt64(siteInstance.IisIdentifier)); return site.State.ToStr

我正在尝试使用Servermanager读取站点的状态。基本上这就是我所拥有的

var serverManager = new ServerManager(siteInstance.Server.ConfigPath);
    var site = serverManager.Sites.FirstOrDefault(x => x.Id == Convert.ToInt64(siteInstance.IisIdentifier));
    return site.State.ToString();
我能够阅读配置文件和网站的细节没有任何问题。但是站点的状态要么是下面给出的COM错误,要么是给出的状态不能反映IIS中站点的实际状态

The object identifier does not represent a valid object. (Exception from HRESULT: 0x800710D8)

据我所知,配置文件只包含站点信息。它不指示哪些IIS服务器正在从配置中读取。那么,服务器管理器如何知道要查看哪些IIS以查找站点的运行状态呢?

签出此站点。。我在谷歌上搜索了Execption plus错误代码,我认为这应该有助于你找到正确的方向

如果文章不能解决问题,请尝试以下方法。。 还可以粘贴.config文件外观的片段

检查IIS管理器中的ApplicationPool以验证您是否具有DefaultAppPool。即使您不使用它,IIS有时仍然需要它来实现一些自动化

查看system32\inetsrv\config\applicationHost.config或通过IIS管理UI

例:


获取站点的原因是您试图从站点配置文件中读取状态,该文件不包含站点的状态。相反,您应该做的是直接连接到IIS服务器,如下所示:

ServerManager manager= ServerManager.OpenRemote("testserver");
var site = manager.Sites.First();
var status = site.State.ToString() ;
有关详细信息,请参阅我下面的帖子:

您的站点是否使用虚拟目录。。?这将是我第一个和AppPool一起检查的地方..你说的实用程序虚拟目录是什么意思?你能详细说明一下吗?我已经检查了AppPool,这是一样的,我可以看到所有AppPool的详细信息,但在尝试获取状态时,它要么给我错误的状态,要么给我不正确的状态我的情况与链接中的情况不同。该站点在IIS上运行良好。只有当我试图通过ServerManager代码访问站点状态时,才会出现错误。我有一种感觉,它指向了错误的IIS服务器,这可以解释整个事情。它可能是..或者可能是关于密码的权限问题。。你能再显示一点代码吗?这个网站需要用户域名和密码吗?谢谢你的帮助。不幸的是,我无法对你的帖子投赞成票。这些信息是否有助于帮助你纠正问题,杰克..?这就是我用来访问网站状态的全部代码。我知道读取配置文件需要权限。这已经解决了。
ServerManager manager= ServerManager.OpenRemote("testserver");
var site = manager.Sites.First();
var status = site.State.ToString() ;