gpt4 book ai didi

c# - SSIS 脚本任务 `Invalid cast exception` 从变量中检索复杂对象

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:47 24 4
gpt4 key购买 nike

先决条件:

我想在程序包执行开始时连接到 MS Dynamics CRM Web 服务,并在整个程序包中重复使用该连接,但我无法通过 SSIS 变量做到这一点。

我无法使用连接管理器,因为我使用了 WebService 任务向导不支持的 OrganizationService.Execute 方法

步骤:

  1. 将 Microsoft.Xrm.Sdk dll 添加到 GAC 和脚本引用中;
  2. 在内部创建了数据流任务和两个独立的脚本任务
  3. 创建了 2 个包变量 crmOrganizationServicecrmOrganizationServiceProxy
    • 都是 System.Object 类型
    • script task 1script task 2 可以读写
  4. 脚本任务 1 内部:

    • 实例化 OrganizationServiceProxyOrganizationService 并连接到 MS Dynamics CRM Web 服务。
    • 将对象的两个实例分配给变量

      //创建
      public OrganizationServiceProxy _serviceProxy = new OrganizationServiceProxy(orgServiceManagement, adCredentials);
      public IOrganizationService _service =(IOrganizationService)_serviceProxy;
      //分配
      this.Variables.crmOrganizationServiceProxy= _serviceProxy;
      this.Variables.crmOrganizationService=_service;

  5. 脚本任务 2 内部:

    OrganizationServiceProxy _serviceProxy = (OrganizationServiceProxy)this.Variables.crmOrganizationServiceProxy

错误:

在第 5 步,我收到无效转换异常,因为无法将 System.Object 转换为 Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy

解决方法:

我确定问题在于在脚本任务之间传递变量时对变量进行基本装箱。但是我没有找到更好的通用方法。在其中,我需要在脚本任务之间传递自定义类的实例。

最佳答案

你可以使用 Reflection or a custom SSIS component但也许这样做不值得。

另一种选择是在您的 SSIS 包和 CRM 之间托管一个临时网络服务,并在网络服务中缓存连接。也许这对您来说容易得多。

关于c# - SSIS 脚本任务 `Invalid cast exception` 从变量中检索复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37703381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com