1

Я построил плагин для платформы Microsoft Dynamics CRM 2013 Online. Плагин зарегистрирован в Delete my_custom_entity. Он синхронный и пост-оперативный. Олицетворение настроено на «Вызов пользователя». Насколько я знаю, плагин должен быть запущен с привилегиями вызывающего пользователя и т. Д. С этими настройками.Почему онлайн-плагин CRM 2013 работает под пользователем SYSTEM все время

Я не могу понять, почему, но мой плагин всегда запускается под пользователем «SYSTEM». Я попытался использовать двух разных пользователей системы без какой-либо удачи. Это своего рода проблема, потому что мой плагин вызывает рабочий процесс, и рабочий процесс отправляет электронное письмо. Пользователь SYSTEM не может отправлять электронные письма.

Это что-то новое в CRM 2013? Я попытался Google, но не смог найти ничего подходящего. Я уже пытался отменить регистрацию и зарегистрировать свою сборку плагинов еще раз. Нет разницы.

Как я могу изменить свою регистрацию плагина, чтобы она выполнялась от имени пользователя, который запускает плагин (который удаляет объект).

Спасибо

+1

Вы пытались использовать старый инструмент регистрации плагина? Я беспокоюсь, что это может быть ошибка в регистрации плагина, которую вы используете. Если у меня будет время, я создам аналогичный случай с моей онлайн-пробной версией. –

+1

@GuidoPreite. На самом деле, я просто заметил какое-то странное поведение в инструменте регистрации плагинов. Это не позволит мне изменить олицетворение только один раз. Когда я перезапускаю программу, это позволяет мне делать это снова, но только один раз. Я определенно попытаюсь получить еще одну версию, чтобы попробовать. Я дам вам знать – kivikall

+1

Инструмент регистрации плагина Я использую сейчас и сталкиваюсь с проблемой - версия 6.1.1.1143 64bit. У меня есть машина Windows 8 (средство регистрации плагинов говорит мне, что версия для Windows: Microsoft Windows NT 6.2.9200.0 64 бит) – kivikall

ответ

3

Как вы узнали о вашем сервисе?

Если вы делаете это так, вы должны получить все действия, выполненные как пользователь, который вызвал плагин.

// Obtain the organization service reference. 
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); 
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); 

Если вы передаете нулевое значение, вы получите системного пользователя, например. serviceFactory.CreateOrganizationService()

IOrganizationServiceFactory.CreateOrganizationService

Указывает пользователя системы, которая вызывает к услуге сделаны для. A Значение null указывает пользователя SYSTEM. При вызове в подключаемом модуле значение Guid.Empty указывает на того же пользователя, что и IPluginExecutionContext. UserId. При вызове в пользовательском рабочем процессе значение Guid.Empty указывает того же пользователя, что и IWorkflowExecutionContext.UserId. Любое другое значение указывает на конкретного пользователя системы.

+0

Я действительно надеюсь, что совершу ошибку, но нет. Я получаю ссылку на службу так же, как вы сказали с контекстом. Кроме того, он не объяснит, почему он работает со всем остальным, чем опция «Вызов пользователя»? – kivikall

+1

Ничего себе! Я понял, что это связано с удалением сообщения/события. Я попытался запустить другой плагин, который я сделал точно так же, как в основном, но он имел несколько шагов, один из которых зарегистрирован в Create, другой - в Update и один на шаге Delete. Шаги создания и обновления отлично работают под вызывающим пользователем, но шаг удаления выполняется под пользователем SYSTEM даже с этим другим плагином ... – kivikall

0

ВАМ следует использовать context.InitiatingUserId скорее.

IOrganizationService service = serviceFactory.CreateOrganizationService(context.InitiatingUserId); 
+1

Как это ответить на вопрос? –

 Смежные вопросы

  • Нет связанных вопросов^_^