SSIS 脚本任务“无效强制转换异常”从变量中检索复杂对象
SSIS Script task `Invalid cast exception` at retrieving complex object from variables
先决条件:
我想在程序包执行开始时连接到 MS Dynamics CRM Web 服务并在整个程序包中重复使用该连接,但我无法通过 SSIS 变量做到这一点。
我无法使用连接管理器,因为我使用了 OrganizationService.Execute
WebService 任务向导不支持的方法
步骤:
- 向 GAC 和脚本引用添加了 Microsoft.Xrm.Sdk dll;
- 在里面创建了数据流任务和两个独立的脚本任务
- 创建了 2 个包变量
crmOrganizationService
和 crmOrganizationServiceProxy
- 两者都是
System.Object
类型
script task 1
和 script task 2
可以读写它们
script task 1
内部:
- 实例化
OrganizationServiceProxy
和 OrganizationService
并连接到 MS Dynamics CRM Web 服务。
将对象的两个实例分配给变量
//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 步,我收到无效转换异常,因为无法将 System.Object
转换为 Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy
解决方法:
我确定问题出在脚本任务之间传递变量时的基本变量装箱中。但是我没有找到更好的通用方法。在其中,我需要在脚本任务之间传递自定义 类 的实例。
您可以使用 Reflection or a custom SSIS component,但这样做可能不值得。
另一种选择是在您的 SSIS 包和 CRM 之间托管一个临时 Web 服务,并在 Web 服务中缓存连接。也许这对你来说容易多了。
先决条件:
我想在程序包执行开始时连接到 MS Dynamics CRM Web 服务并在整个程序包中重复使用该连接,但我无法通过 SSIS 变量做到这一点。
我无法使用连接管理器,因为我使用了 OrganizationService.Execute
WebService 任务向导不支持的方法
步骤:
- 向 GAC 和脚本引用添加了 Microsoft.Xrm.Sdk dll;
- 在里面创建了数据流任务和两个独立的脚本任务
- 创建了 2 个包变量
crmOrganizationService
和crmOrganizationServiceProxy
- 两者都是
System.Object
类型
script task 1
和script task 2
可以读写它们
- 两者都是
script task 1
内部:- 实例化
OrganizationServiceProxy
和OrganizationService
并连接到 MS Dynamics CRM Web 服务。 将对象的两个实例分配给变量
//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 步,我收到无效转换异常,因为无法将 System.Object
转换为 Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy
解决方法:
我确定问题出在脚本任务之间传递变量时的基本变量装箱中。但是我没有找到更好的通用方法。在其中,我需要在脚本任务之间传递自定义 类 的实例。
您可以使用 Reflection or a custom SSIS component,但这样做可能不值得。
另一种选择是在您的 SSIS 包和 CRM 之间托管一个临时 Web 服务,并在 Web 服务中缓存连接。也许这对你来说容易多了。