У меня есть рабочая группа веб-серверов под управлением Server 2008 R2, в которой я пытаюсь управлять script, который проверяет пространство на диске всех из них. Я установил это несколько месяцев назад, когда серверы были настроены, и я считаю, что он работает нормально. Теперь я иду и проверяю, и он дает сообщение об ошибке "Сервер RPC недоступен". script - это страница С# ASP.NET, хотя я пробовал сопоставимые вызовы в PowerShell, и она дает ту же ошибку. script отлично работает для доступа к информации для локальной машины, но не может получить доступ к информации о удаленном сервере.
Я провел последние несколько часов, прокладывая все, что могу найти, но ничего не работает. Я установил разрешения для 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(Object 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, Object o, Object t, EventArgs e) +25 System.Web.UI.Control.LoadRecursive() +71 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3048
Информация о версии: Microsoft.NET Framework Версия: 4.0.30319; Версия ASP.NET: 4.0.30319.1