У меня есть рабочая группа веб-серверов под управлением Server 2008 R2, в которой я пытаюсь управлять сценарием, который проверяет дисковое пространство всех из них. Я настроил это несколько месяцев назад, когда настраивались серверы, и я считаю, что он работал нормально. Теперь я иду и проверяю, и он выдает ошибку, говорящую «Сервер RPC недоступен». Сценарий представляет собой страницу C # ASP.NET, хотя я пробовал сопоставимые вызовы в PowerShell и выдает ту же ошибку. Сценарий прекрасно работает для доступа к информации для локального компьютера, но не может получить доступ к информации удаленного сервера.
Я провел последние несколько часов, копая все, что я могу найти, но ничего не работает. Я установил разрешения для WMI (удаленного и локального), DCOM (удаленного и локального) и всего диска компьютера, к которому я обращаюсь. Я использовал имя компьютера, IP-адрес, полное имя компьютера (xxx.echomountain.com) и пробовал многочисленные параметры олицетворения и аутентификации в объекте ConnectionOptions.
Я знаю, что имя пользователя / пароли, которые я использую, правильные, так как я могу получить доступ к каталогам сегментов одного из другого
Есть идеи, что еще я мог бы проверить, что может вызвать эту ошибку?
ConnectionOptions oConn = new ConnectionOptions();
oConn.Impersonation = ImpersonationLevel.Impersonate;
oConn.EnablePrivileges = true;
oConn.Username = username;
oConn.Password = password;
//oConn.Authentication = AuthenticationLevel.PacketPrivacy;
string strNameSpace = @"\\";
if (srvname != "")
strNameSpace += srvname + ".echomountain.com";
else
strNameSpace += ".";
strNameSpace += @"\root\cimv2";
ManagementScope oMs = new ManagementScope(strNameSpace, oConn);
//get Fixed disk state
ObjectQuery oQuery = new ObjectQuery("select FreeSpace,Size,Name from Win32_LogicalDisk where DriveType=3");
//Execute the query
ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery);
//Get the results
ManagementObjectCollection oReturnCollection = oSearcher.Get();
//loop through found drives and write out info
double D_Freespace = 0;
double D_Totalspace = 0;
foreach (ManagementObject oReturn in oReturnCollection)
{
// Disk name
//MessageBox.Show("Name : " + oReturn["Name"].ToString());
// Free Space in bytes
string strFreespace = oReturn["FreeSpace"].ToString();
D_Freespace = D_Freespace + System.Convert.ToDouble(strFreespace);
// Size in bytes
string strTotalspace = oReturn["Size"].ToString();
D_Totalspace = D_Totalspace + System.Convert.ToDouble(strTotalspace);
boxSize = (D_Totalspace / GB).ToString("##.00");
boxFree = (D_Freespace / GB).ToString("##.00");
Response.Write(srvname + ":" + boxSize + ":" + boxFree);
}
Ошибка сервера в приложении '/'.
Сервер RPC недоступен. (Исключение из HRESULT: 0x800706BA)
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.Runtime.InteropServices.COMException: сервер RPC недоступен. (Исключение из HRESULT: 0x800706BA)
Ошибка источника:
Строка 64:
Строка 65: // Получить результаты
Строка 66: ManagementObjectCollection oReturnCollection = oSearcher.Get ();
Строка 67:
Строка 68: // перебрать найденные диски и записать информацию
Исходный файл: c: \ Web \ medelaimages.com \ iis \ tool \ boxinfoagent.aspx Строка: 66
Трассировка стека:
[COMException (0x800706ba): сервер RPC недоступен. (Исключение из HRESULT: 0x800706BA)]
System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal (Int32 errorCode, IntPtr errorInfo) +0
System.Management.ManagementScope.InitializeGuts (Объект o) +674
System.Management.ManagementScope.Initialize () +347
System.Management.ManagementObjectSearcher.Initialize () +189
System.Management.ManagementObjectSearcher.Get () +54
ASP.tool_boxinfoagent_aspx.Page_Load (Отправитель объекта, EventArgs e) в c: \ Web \ medelaimages.com \ iis \ tool \ boxinfoagent.aspx: 66
System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Объект o, Объект t, EventArgs e) +25
System.Web.UI.Control.LoadRecursive () +71
System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint) + 3048
Информация о версии: Microsoft .NET Framework Версия: 4.0.30319; ASP.NET версия: 4.0.30319.1