stsadm.exe аварийно завершает работу при выполнении всех команд
Вопрос
Внезапно stsadm перестал работать, вызывая сбой при выполнении всех команд, которыми он был запущен (даже -help!)
например
> stsadm.exe -help
Unhandled Exception: System.ArgumentNullException: Value cannot be null.
Parameter name: path
at System.IO.DirectoryInfo..ctor(String path)
at Microsoft.SharePoint.StsAdmin.SPStsAdmin.EnsureExtendedOperationMap()
at Microsoft.SharePoint.StsAdmin.SPStsAdmin.EnsureFullOperationMap()
at Microsoft.SharePoint.StsAdmin.SPStsAdmin.LookupOperationName(String strOperation)
at Microsoft.SharePoint.StsAdmin.SPStsAdmin.Main(String[] args)
Я озадачен, почему.Единственным существенным изменением на сервере между вчерашним и сегодняшним днем была установка веб-частей Citrix Web Interface для SharePoint.
ОБНОВЛЯТЬ:Я также получаю следующую ошибку при запуске центра администрирования из меню «Пуск» (Пуск -> Microsoft Office Server -> Центр администрирования SharePoint 3.0).
Произошла ошибка при доступе к разделу реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Shared Tools\Web Server Extensions\12.0\WSS.Восстановите этот продукт, выбрав его в меню «Установка и удаление программ».
Если я захожу в Центр администрирования через браузер и ввожу URL-адрес (например, http://интранет:8080), все работает нормально.
БОЛЬШЕ ОБНОВЛЕНИЯ: Я немного покопался в stsadm, разбирая его с помощью .NET Reflector.Оказывается, строка, от которой он отказывается:
FileInfo[] files = new DirectoryInfo(SPUtility.GetGenericSetupPath("config")).GetFiles("stsadmcommands.*.xml");
в EnsureExtendedOperationMap()
метод.
Причина, я полагаю, в том, что SPUtility.GetGenericSetupPath("config")
возвращает ноль.Я установил тестовое консольное приложение и, конечно же, SPUtility.GetGenericSetupPath("config")
возвращает ноль.Значит что-то явно где-то сильно залито.
При запуске тестового консольного приложения я заметил следующий вывод:
Первое случайное исключение типа «System.DllNotFoundException» произошло в Microsoft.SharePoint.dll.
что звучит не очень хорошо.Поэтому я прошу Visual Studio прерывать все исключения, даже обработанные, и исключение выглядит следующим образом:
System.DllNotFoundException:Невозможно загрузить DLL onetnative.dll:Указанный модуль не может быть найден.(Исключение из HRESULT:0x8007007E)
Примечание:Я начал отдельный вопрос относительно этой проблемы с onetnative.dll...
Решение
Насколько я могу проследить, это было вызвано установкой неправильной версии Microsoft J#.
J# является обязательным условием для веб-частей Citrix Web Interface для SharePoint.Я установил 32-битную версию по ошибке, затем удалил и установил 64-битную версию.У меня есть догадка (основанная на хорошем тестировании, но не проверенная на 100%), что это привело к тому, что приложения .NET/CLR начали искать в 32-битном узле реестра, а не в 64-битном.
Другие советы
Возможно, UAC включен, и вы, возможно, запускаете командную строку не от имени администратора?