Предпосылки:
Я хочу подключиться к веб-сервисам MS Dynamics CRM в начале выполнения пакета и повторно использовать соединение по всему пакету, но я не удалось сделать это через переменные SSIS.задача SSIS сценария `Invalid литая exception` при получении сложного объекта от переменных
Я не могу использовать Диспетчер соединений, потому что я использую OrganizationService.Execute
метод, который не поддерживается мастером Task WebService
шаги:
- Добавлено Microsoft.Xrm.Sdk библиотеки DLL в GAC и к ссылкам сценария;
- создания потока данных задач и два отдельных задания сценария внутри
- Created 2 переменных пакета
crmOrganizationService
иcrmOrganizationServiceProxy
- оба типа
System.Object
script task 1
иscript task 2
могут читать, писать их
- оба типа
Внутри от
script task 1
:- Проинсталлировать
OrganizationServiceProxy
иOrganizationService
и подключиться к веб-службам MS Dynamics CRM. задавать как экземпляры объектов к переменным
//create public OrganizationServiceProxy _serviceProxy = new OrganizationServiceProxy(orgServiceManagement, adCredentials); public IOrganizationService _service =(IOrganizationService)_serviceProxy; //assign this.Variables.crmOrganizationServiceProxy= _serviceProxy; this.Variables.crmOrganizationService=_service;
- Проинсталлировать
Внутри
script task 2
:OrganizationServiceProxy _serviceProxy = (OrganizationServiceProxy)this.Variables.crmOrganizationServiceProxy
Ошибка:
На этапе 5 я получаю Invalid исключения броска из-за неспособность бросить System.Object
в Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy
Решение:
Я уверен, что эта проблема в основном боксе переменных при прохождении их между задачами сценария. Но я не нашел лучшего общего подхода. Внутри него мне нужно передать экземпляры пользовательских классов между скрипт-задачами.