iis - 使用 Microsoft.Web.Administration 获取远程应用程序池状态

标签 iis dns pool

我正在尝试使用 Microsoft.Web.Administration API 获取 IIS 7.5 应用程序池的状态,但出现异常:

System.Runtime.InteropServices.COMException was unhandled
  ErrorCode=-2147020584
  HResult=-2147020584
  Message=The object identifier does not represent a valid object. (Exception from HRESULT: 0x800710D8)
  Source=Microsoft.Web.Administration

我使用以下代码连接到不同域中的远程计算机:

string appHostConfigFile = "\\\\" + serverName + "\\c$\\windows\\system32\\inetsrv\\config\\applicationHost.config";
UNCAccess unc = new UNCAccess(@"\\" + serverName + "\\c$\\windows\\system32\\inetsrv\\config", <USER_NAME>, <DOMAIN>, <PASSWORD>);
server = new ServerManager(appHostConfigFile);

然后尝试遍历所有应用程序池:

ApplicationPoolCollection applicationPools = server.ApplicationPools;
foreach (ApplicationPool pool in applicationPools)
{
    Console.WriteLine(“Name: ” + pool.Name + “ State: “ + pool. State);
}

现在,奇怪的是我确实正确地获得了 Name 属性(以及许多其他属性),但是 State 属性认为是一个异常(exception)。 只有当我尝试连接到本地计算机 (127.0.0.1) 时,一切都按预期进行。

那么,有人能告诉我我在这里遗漏了什么吗?有没有其他方法可以连接到我域外的机器上的远程 IIS 服务器?

非常感谢!

最佳答案

我已成功使用 Windows 模拟通过 ServerManager 访问远程 IIS 实例。

using (ServerManager serverManager = new ServerManager($@"\\{computerName}\c$\windows\system32\inetsrv\config\applicationHost.config"))
{
    ApplicationPoolCollection appPools = serverManager.ApplicationPools
}

这适用于 IIS 8 和 IIS 7.5。我没有测试过其他版本。我正在使用 SimpleImpersonation(可通过 Nuget 获得)。

关于iis - 使用 Microsoft.Web.Administration 获取远程应用程序池状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33719210/

相关文章:

python - 无法让 Mercurial 的 hgweb.cgi 在 IIS7 上工作

c# - 如何在 HttpModule 中执行 XSLT 转换?

docker - 我如何告诉我的Dockerfile在docker-compose的RUN命令中使用哪个DNS?

amazon-web-services - 为什么我无法使用私有(private) DNS 地址访问 AWS 实例

Java 字符串池测试不起作用

java - 连接池 : is it appropriate

iis - 调试具有特定域的 asp.net 5 应用程序

python - 如何使用不同的 Python 运行时将 Django/WSGI 部署为 azure web 应用程序?

mysql - PHP MODx mysql 解析错误?我在哪里更改设置?

azure - 我可以在无服务器 SQL 池中创建存储过程吗