gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:40:36 25 4
gpt4 key购买 nike

我正在尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com