3

我正在尝试使用 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 来查找站点的运行状态的呢?

4

2 回答 2

1

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

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

请参阅下面我的帖子以获取完整详细信息:以 编程方式从 IIS 获取站点状态,返回 COM 错误

于 2012-12-12T23:42:36.153 回答
0

结帐这个网站..我用谷歌搜索了 Execption 加上错误代码,我认为这应该有助于让你指出正确的方向

对象标识符不代表有效对象。(来自 HRESULT 的异常:0x800710D8)

如果文章没有解决问题或问题,请尝试以下操作.. 也粘贴您的 .config 文件的片段。

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

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

前任:

<applicationPools>  
        <add name="DefaultAppPool" />  
      <add name="Classic .NET AppPool" managedPipelineMode="Classic" />         <applicationPoolDefaults>    
          <processModel identityType="ApplicationPoolIdentity" />                     </applicationPoolDefaults>
</applicationPools>
于 2012-12-11T05:57:20.843 回答