none
Не работает Event receiver RRS feed

  • Общие обсуждения

  • Добрый день! Столкнулся с такой проблемой: написал event receiver. На тестовом серваке отладил, все ок. Развернул на рабочей машине - не работает. В лог пишет следующее:  код 6875

    Microsoft.SharePoint.Workflow.SPWorkflowAutostartEventReceiver
    string1 Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c
        string2 : Не удается найти пользователя.

    Кроме того, периодически вылетает предупреждение 1309 с содержимым

    username

    SPException
     

    Не удается найти пользователя.

    посмотрел этого пользователя, вроде с ним все в порядке. Есть предположение, что это связано с тем, что портал переносился с другого домена и гдето остались старые записи, однако посмотрел базу контента (userinfo) и профилей пользователей (userprofile_full), вроде все ок.

    Кроме того, почитав форумы, наткнулся на совет, что может не работать изза проблем с фичей Workflows. При попытке ее активировать через powershell также выдается ошибка о проблемах с пользователем. Однако через утилиту sharepoint manager фича активируется нормально. Есть какие-нибудь идеи куда можно копать?:)

    19 декабря 2011 г. 11:42

Все ответы

  • У вас на обоих серваках настроена или не настроена служба синхронизации с ад! Как в обработчике получаете User?!
    |Мой Блог | Мой твиттер |
    19 декабря 2011 г. 12:22
  • На самом деле думаю 90% проблема не в коде а именно в фиче Workflows, у которой при активации возникают проблемы с системной учеткой (речь идет именно о ней), а event receiver, я так понял, связан с этой фичей каким то образом. Кроме того, в том же проекте есть timer job, где тот же код используется и прекрасно работает.
    private UserProfile GetUserInfo(string AccountName, SPSite site) //вызываю эту функцию, возвращает объект Userprofile
            {
                UserProfile profile = null;
                try
                {
                    SPServiceContext serviceContext = SPServiceContext.GetContext(site);
                    UserProfileManager profileManager = new UserProfileManager(serviceContext);
                    if (AccountName != string.Empty)
                    {
                        profile = profileManager.GetUserProfile(AccountName);
                    }
                    else
                    {
                        profile = null;
                    }
                }
                catch (Exception ex) { throw ex; }
                return profile;
            }
    private SPUser GetSPUserObject(SPListItem spListItem, String fieldName)
            {
                SPUser spUser = null;
                try
                {
                    if (fieldName != string.Empty)
                    {
                        SPFieldUser field = spListItem.Fields[fieldName] as SPFieldUser;
                        if (field != null && spListItem[fieldName] != null)
                        {
                            SPFieldUserValue fieldValue = field.GetFieldValue(spListItem[fieldName].ToString()) as SPFieldUserValue;
                            if (fieldValue != null)
                            {
                                spUser = fieldValue.User;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                return spUser;
            }

    19 декабря 2011 г. 12:29