You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET C# Windows应用中使用Dynamics 365 Channel Integration Framework (CIF)

.NET C# Windows应用集成Dynamics 365 CIF入门指南

一、前置准备

  • 确认Windows应用基于.NET Framework/.NET 6+开发(根据项目类型选择对应框架)
  • 持有有效的Dynamics 365访问令牌,令牌需包含CIF相关权限(如crm.cif_access)
  • 记录Dynamics 365环境的组织URL(格式示例:https://yourorg.crm.dynamics.com)

二、库引用

通过NuGet安装以下必要包:

  • Microsoft.PowerPlatform.Dataverse.Client:用于Dynamics 365数据交互
  • System.Net.Http:用于CIF REST API请求

安装命令:

Install-Package Microsoft.PowerPlatform.Dataverse.Client
Install-Package System.Net.Http

三、认证与连接初始化

1. 初始化HTTP客户端(用于CIF REST操作)

using System.Net.Http;
using System.Net.Http.Headers;

var httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("https://yourorg.crm.dynamics.com/");
// 注入访问令牌
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "your_access_token_here");
// 设置OData协议版本
httpClient.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0");
httpClient.DefaultRequestHeaders.Add("OData-Version", "4.0");
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

2. 初始化Dataverse服务客户端(用于数据读写)

using Microsoft.PowerPlatform.Dataverse.Client;
using Microsoft.Xrm.Sdk;

var serviceClient = new ServiceClient(
    new Uri("https://yourorg.crm.dynamics.com/XRMServices/2011/Organization.svc"),
    null,
    "your_access_token_here",
    true);

if (!serviceClient.IsReady)
{
    throw new Exception($"连接失败: {serviceClient.LastError}");
}

四、核心操作示例

1. 打开Dynamics 365实体表单(CIF REST API)

通过cif_openform端点触发表单打开操作:

var openFormPayload = new
{
    entityName = "account",
    entityId = "00000000-0000-0000-0000-000000000001", // 目标账户ID
    formId = "00000000-0000-0000-0000-000000000002", // 可选,指定表单ID
    windowParameters = new { openInNewWindow = true }
};

var jsonContent = new StringContent(
    System.Text.Json.JsonSerializer.Serialize(openFormPayload),
    System.Text.Encoding.UTF8,
    "application/json");

var response = await httpClient.PostAsync("api/data/v9.2/cif_openform", jsonContent);
response.EnsureSuccessStatusCode();

2. 查询Dynamics 365数据

使用Dataverse客户端查询符合条件的账户:

using Microsoft.Xrm.Sdk.Query;

var query = new QueryExpression("account")
{
    ColumnSet = new ColumnSet("name", "accountnumber", "emailaddress1"),
    Criteria = new FilterExpression
    {
        Conditions = { new ConditionExpression("name", ConditionOperator.Contains, "Contoso") }
    }
};

var accounts = serviceClient.RetrieveMultiple(query);
foreach (var account in accounts.Entities)
{
    Console.WriteLine($"账户名称: {account.GetAttributeValue<string>("name")}");
    Console.WriteLine($"账户编号: {account.GetAttributeValue<string>("accountnumber")}");
}

3. 创建实体记录

通过Dataverse客户端新建账户:

var newAccount = new Entity("account");
newAccount["name"] = "Contoso New Account";
newAccount["accountnumber"] = "CONT001";
newAccount["emailaddress1"] = "contact@contoso.com";

var accountId = serviceClient.Create(newAccount);
Console.WriteLine($"新账户ID: {accountId}");

五、关键注意事项

  • 访问令牌需定期刷新,避免过期导致请求失败
  • 需确保应用已在Dynamics 365中注册为CIF渠道应用,并配置对应权限与渠道信息
  • 所有API请求建议使用最新稳定版Dynamics 365 API(如v9.2)

内容的提问来源于stack exchange,提问作者Jon R.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:57:27