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

无需应用注册如何通过C#后端访问Dataverse表?

替代Dataverse Web API的C#数据采集方案(无需复杂应用注册)

1. 复用Power Platform CLI认证会话(开发/测试场景首选)

  • 先通过pac auth create命令登录你的Dataverse环境,CLI会在本地生成认证缓存
  • 用Microsoft.PowerPlatform.Dataverse.Client包的ServiceClient,通过指定连接字符串复用缓存的认证,无需单独注册应用
  • 示例代码:
using Microsoft.PowerPlatform.Dataverse.Client;
using Microsoft.Xrm.Sdk;

var connectionString = "AuthType=OAuth;UseWebApi=true;Profile=Default;Url=https://your-org.crm.dynamics.com/";
using var service = new ServiceClient(connectionString);
if (service.IsReady)
{
    var query = new QueryExpression("account")
    {
        ColumnSet = new ColumnSet("name", "accountnumber")
    };
    var results = service.RetrieveMultiple(query);
    // 处理返回的数据集合
}

2. 交互式用户认证(内部桌面工具场景)

  • 直接在代码中弹出OAuth登录窗口,让用户用企业账号登录,跳过应用注册流程
  • 使用微软公开的公共客户端ID(1950a258-227b-4e31-a9cf-717495945fc2),无需自行注册应用
  • 示例代码:
using Microsoft.PowerPlatform.Dataverse.Client;
using Microsoft.Xrm.Sdk;
using Microsoft.Identity.Client;

var publicClientId = "1950a258-227b-4e31-a9cf-717495945fc2";
var orgUrl = "https://your-org.crm.dynamics.com/";
var authParams = new AuthenticationParameters(PromptBehavior.SelectAccount)
{
    ClientId = publicClientId,
    Resource = orgUrl,
    Authority = "https://login.microsoftonline.com/common"
};

using var service = new ServiceClient(orgUrl, authParams);
if (service.IsReady)
{
    // FetchXML查询示例
    var fetchXml = @"<fetch version='1.0' output-format='xml-platform' mapping='logical'>
                      <entity name='account'>
                        <attribute name='name' />
                        <attribute name='accountnumber' />
                      </entity>
                    </fetch>";
    var results = service.RetrieveMultiple(new FetchExpression(fetchXml));
    // 处理数据
}

3. Power Automate中转(无直接Dataverse权限场景)

  • 在Power Automate中创建以「当HTTP请求收到时」为触发器的流,添加「列出Dataverse表行」动作
  • C#代码只需发送HTTP请求到Power Automate的触发器URL,就能间接获取数据,完全绕开应用注册
  • 注意:需确保Power Automate流的权限配置符合企业要求,请求参数与流的定义匹配

之前连接失败的排查要点

  • 确认企业环境启用了现代身份验证,旧版AD认证可能已被禁用
  • 检查网络防火墙是否允许访问Dataverse的端点(*.crm.dynamics.com)
  • 给ServiceClient的连接字符串添加TraceEnabled=true,查看详细错误日志定位问题

内容的提问来源于stack exchange,提问作者MarDev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:41:29