.NET 4.6.2控制台可连D365,SSIS脚本任务相同代码失败
SSIS脚本任务中CrmServiceClient初始化失败问题
问题现象
在SQL Server 2016目标版本的SSIS脚本任务(VSTA项目目标框架设为4.6.2)中,创建Microsoft.Xrm.Tooling.Connector.CrmServiceClient对象后出现异常:
IsReady属性返回false- 访问
CurrentAccessToken属性抛出System.NullReferenceException异常 - 执行数据查询代码时,因缺少令牌触发空引用异常:
var query = new QueryExpression("account"); var results = client.RetrieveMultiple(query);
完全相同的代码、一致的实例URI、客户端ID和客户端密钥,在.NET 4.6.2控制台应用中可正常运行。
环境差异
控制台应用可通过NuGet管理依赖包,而SSIS的VSTA环境只能手动添加引用(已尝试添加控制台项目生成的DLL,但问题未解决)。
已尝试的解决方案
- 暂未使用推荐的
Microsoft.PowerPlatform.Dataverse.Client,因其依赖过多在VSTA中引发更多问题 - 添加代码
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;,无效果 - 参考Web应用类似问题的解决方案,但不适用当前场景
代码示例
控制台应用代码
using Microsoft.Xrm.Sdk; using System; namespace D365Test { internal class Program { private static void Main(string[] args) { Microsoft.Xrm.Tooling.Connector.CrmServiceClient client = new Microsoft.Xrm.Tooling.Connector.CrmServiceClient ( new Uri(@"https://MyOrg.crm6.dynamics.com"), @"myClientId", @"myClientSecret", false, null ); } } }
SSIS脚本代码
public override void CreateNewOutputRows() { Microsoft.Xrm.Tooling.Connector.CrmServiceClient client = new Microsoft.Xrm.Tooling.Connector.CrmServiceClient ( new Uri(@"https://MyOrg.crm6.dynamics.com"), @"myClientId", @"myClientSecret", false, null ); // ... }
内容的提问来源于stack exchange,提问作者allmhuran
相关产品推荐
相关产品推荐

