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