AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.01.2012, 20:11   #1  
2rik is offline
2rik
Участник
 
20 / 10 (1) +
Регистрация: 15.11.2011
! Plugin из под Admin
Господа, подскажите пожалуйста
Столкнулся с такой проблемой.
Есть объект звонок, при его сохранении создается объект кастомной сущности, прав на чтение и создание которой у данного пользователя не должно быть.
Можно ли заставить плагин работать из под админа?

В Plugin Registration Tool - выбираю в поле Run in User Context админа, но все равно не срабатывает, выдает ошибку.

Подскажите, как можно это обойти ?

Заранее благодарен


Пробовал поступить через

IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));

string t = "73E3BB87-55B3-E011-9B86-00155D053B37"; - айдишник админа
Guid CallUserId=Guid.Parse(t);

_serviceProxy.CallerId = CallUserId;
_service = serviceFactory.CreateOrganizationService(context.UserId); //(context.UserId);
orgContext = new OrganizationServiceContext(_service);

ITracingService trace = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

Но плагин не отрабатывает вообще. object reference not set to an instance of an object

Последний раз редактировалось 2rik; 05.01.2012 в 21:26.
Старый 06.01.2012, 23:56   #2  
griefon is offline
griefon
Участник
 
131 / 52 (2) ++++
Регистрация: 07.12.2010
Адрес: down under
Да, можно запустить плагин от имени админа, вот пример работающего кода:
X++:
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService serviceAdmin = serviceFactory.CreateOrganizationService(new Guid ("73E3BB87-55B3-E011-9B86-00155D053B37"));
А на какой строке у вас выскакивает это исключение?
За это сообщение автора поблагодарили: 2rik (1).
Старый 07.01.2012, 00:53   #3  
2rik is offline
2rik
Участник
 
20 / 10 (1) +
Регистрация: 15.11.2011
Спасибо, как только окажусь возле срм - попробую.
Где именно вылетает - так и не успел найти.
Старый 07.01.2012, 15:41   #4  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от 2rik Посмотреть сообщение
Господа, подскажите пожалуйста
Столкнулся с такой проблемой.
Есть объект звонок, при его сохранении создается объект кастомной сущности, прав на чтение и создание которой у данного пользователя не должно быть.
Можно ли заставить плагин работать из под админа?

В Plugin Registration Tool - выбираю в поле Run in User Context админа, но все равно не срабатывает, выдает ошибку.

Подскажите, как можно это обойти ?

Заранее благодарен


Пробовал поступить через

IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));

string t = "73E3BB87-55B3-E011-9B86-00155D053B37"; - айдишник админа
Guid CallUserId=Guid.Parse(t);

_serviceProxy.CallerId = CallUserId;
_service = serviceFactory.CreateOrganizationService(context.UserId); //(context.UserId);
orgContext = new OrganizationServiceContext(_service);

ITracingService trace = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

Но плагин не отрабатывает вообще. object reference not set to an instance of an object
Где в коде определяется переменная _serviceProxy? Зачем создается CallUserId, если OrganizationService вы создаете при помощи context.UserId?
Guid можно создавать через конструкцию
Код:
Guid CallUserId = new Guid("73E3BB87-55B3-E011-9B86-00155D053B37");
Я думаю, вам просто нужно прочить в SDK как правильно отлаживать плагины. Выбор контекста администратора при регистрации плагина должен работать как надо. Ошибка в где-то в вашем коде.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 11.01.2012, 13:32   #5  
2rik is offline
2rik
Участник
 
20 / 10 (1) +
Регистрация: 15.11.2011
Вы правы, спасибо. Действительно ошибка была в коде, а не в контексте. Все работает, благодарю
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Jim Wang: CRM 2011 Plugin Development Workspace Blog bot Dynamics CRM: Blogs 0 16.07.2011 17:15
Microsoft Dynamics CRM Team Blog: Options: Plugin, Workflow or Dialog Blog bot Dynamics CRM: Blogs 0 22.06.2011 21:12
Microsoft Dynamics CRM Team Blog: A better way to learn LINQ-to-CRM – LINQPad plugin for MS Dynamics CRM 2011 is available! Blog bot Dynamics CRM: Blogs 0 12.01.2011 03:18
CRM DE LA CREME! Three Top Tips for CRM 4.0 Plugin Development Blog bot Dynamics CRM: Blogs 0 13.08.2009 15:05
haditeo: Is it possible to register different event handlers in only one assembly to be registered in Dynamics CRM Plugin ? Blog bot Dynamics CRM: Blogs 0 13.08.2009 15:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:55.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.