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

时间:2012-12-11 05:48:23

标签: 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.ToString();

我能够毫无问题地阅读配置文件和网站详细信息。但该网站的状态是给我下面的COM错误或给出一个不反映IIS中的网站的实际状态的状态。

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

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

2 个答案:

答案 0 :(得分:1)

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

ServerManager manager= ServerManager.OpenRemote("testserver");
var site = manager.Sites.First();
var status = site.State.ToString() ;

有关详细信息,请参阅我的帖子: Programmatically get site status from IIS, gets back COM error

答案 1 :(得分:0)

查看此网站..我搜索了Execption plus错误代码,我认为这应该有助于让您指向正确的方向

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

如果文章没有解决问题或问题请尝试以下.. 还会粘贴.config文件的样子片段。

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

查看system32 \ inetsrv \ config \ applicationHost.config或通过IIS Managment UI。

例如:

<applicationPools>  
        <add name="DefaultAppPool" />  
      <add name="Classic .NET AppPool" managedPipelineMode="Classic" />         <applicationPoolDefaults>    
          <processModel identityType="ApplicationPoolIdentity" />                     </applicationPoolDefaults>
</applicationPools>