【发布时间】:2013-05-10 11:04:02
【问题描述】:
我正在尝试让所有应用程序池在 IIS7 服务器上运行。我想在网格中显示这些并允许用户启动、停止或回收它们。这在使用 DirectoryENtry 的 IIS6 中效果很好,但不适用于 IIS7。我将需要通过 4 或 5 台服务器并获取所有应用程序池。这是我的代码:
using (SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString))
{
myConnection.Open();
SqlCommand cmd = new SqlCommand("SELECT ServerIP FROM Servers WHERE AppPoolIIS7='Y' AND Domain='LAN'", myConnection);
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
while (rdr.Read())
{
string serverIP = rdr["ServerIP"].ToString();
ServerManager sm = new ServerManager(serverIP);
ApplicationPoolCollection appPoolColl = sm.ApplicationPools;
foreach (ApplicationPool appPool in appPoolColl)
{
}
}
}
else
{
}
}
单步执行代码时,我的第一台服务器已成功从数据库中检索到,但是当我尝试将 serverIP 传递给服务器管理器时,出现以下错误。
文件名:\?\10.0.22.22 错误:无法读取配置文件
为什么要将 \?\ 添加到我的 IP 中?
编辑:我对代码进行了一些更改,但出现了不同的错误。
ServerManager sm = ServerManager.OpenRemote(serverIP);
这是我收到的错误:
检索远程组件的 COM 类工厂 来自机器的 CLSID {2B72133B-3F5B-4602-8952-803546CE3344} 由于以下错误而失败:800706ba
【问题讨论】:
-
抱歉,如果您已经看过这个similar question,它没有得到公认的答案,但以防万一那里的任何建议对您有所帮助。
-
指的是哪个用户?我运行应用程序的用户是谁?
-
我想是的。否则,我怀疑如果它转换为网络服务用户,它将是计算机帐户。您将能够在远程计算机上的身份验证失败事件中看到用户详细信息(如果您已审核登录失败)。如果您在远程计算机上看不到任何内容,我也确实看到了需要允许通过防火墙的与 DCOM 相关的某些内容。
标签: c# asp.net .net-4.0 frameworks