Sergey Belskiy Technical Blog

All about SharePoint

Проблемы работы User Profile Service SharePoint 2013 (stopped-extension-dll-exception)

Доброго времени суток.

Пару дней назад столкнулся с проблемой, которая мешала работать службе User Profile Service на тестовой площадке. Тестовая площадка была собрана и поднята с полного бекапа продуктивной среды и вроде всё работало, пока не выяснилось, что не синхронизируются профиля. А именно, новые пользователи появляются, а текущие не обновляются, если какой то из атрибутов был изменён.

Начал разбираться и заметил ошибки при синхронизации профилей:

Log Name:      Application
Source:           FIMSynchronizationService
Event ID:        6801
Task Category: Server
Level:              Error
Keywords:    Classic
Description:
The extensible extension returned an unsupported error.
The stack trace is:

“System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> Microsoft.Office.Server.UserProfiles.UserProfileApplicationNotAvailableException: No User Profile Application available to service the request. Contact your farm administrator.
at Microsoft.Office.Server.UserProfiles.ProfileManagerInstance.GetApplicationProxy()
at Microsoft.Office.Server.UserProfiles.ProfileImportExportService.GetPartitionIds()
— End of inner exception stack trace —
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.Office.Server.WebServiceDirectProxy.WebMethodInfo.Invoke(Object webServiceInstance, Object[] args)
at Microsoft.Office.Server.WebServiceDirectProxy.Invoke(String methodName, Object[] args)
at Microsoft.Office.Server.UserProfiles.ManagementAgent.ProfileImportExportDirect.GetPartitionIds()
at Microsoft.Office.Server.UserProfiles.ManagementAgent.ProfileImportExportExtension.Microsoft.MetadirectoryServices.IMAExtensibleFileImport.
GenerateImportFile(String fileName, String connectTo, String user, String password, ConfigParameterCollection configParameters, Boolean fFullImport, TypeDescriptionCollection types, String& customData)
Forefront Identity Manager 4.0.2450.11″

В первую очередь начал искать ответ в интернете и натолкнулся на статью – http://support.microsoft.com/kb/2520394, в которой речь идёт о версии 2010. Но советуют пересоздать прокси к сервису приложений профилей.

  1. Remove the User Profile Service Application proxy:
    $proxy = Get-SPServiceApplicationProxy | where {$_.typename -eq "User Profile Service Application Proxy"}
    Remove-SPServiceApplicationProxy -Identity $proxy -confirm:$false
  2. Create the User Profile Service Application proxy:
    $upa = Get-SPServiceApplication | where {$_.name -eq "<name here>"}
    New-SPProfileServiceApplicationProxy -Name <proxyName> -Uri $upa.uri.absoluteURI
И после переподключить веб приложение.
Add-SPServiceApplicationProxyGroupMember [-Identity <the service application proxy group>] [-Member <members to add to the service application proxy group>]
После таких телодвижений ничего не поменялось, как бы я не делал iisreset /noforce или же физически перезагружать сервер. Ничего не помогло. Дальше я начал думать, что может отличаться от продуктива в этой среде, так как по идеи две среды идентичны. Отличие было только в днс именах. Дальше я нашёл ещё один вариант решения проблемы.
Необходимо запустить клиент управления службой профилей MIISClient.exe и перейти на вкладку Management Agents. В ней выбрать задачу MOSS-GUID указанный идентификатор и открыть свойства. Перейти в раздел Connection Information и указать правильный адрес к сайту центр администрирования. У меня был указан другой и я поменял на правильный.
После этих действий я перезагрузить IIS, службы Forefront и даже сервер. Ничего не помогло.
После 2-х часов очередных неудачных попыток восстановить сервис приложение, я всё таки нашёл ответ на свою проблему. Необходимо было просто остановить сервис приложение, через центр администрирования или же через команду PowerShell и после остановки заново запустить. После чего ошибка исчезла.
Удачного Вам шарикопрограммирования :).