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

如何使用Azure.ResourceManager.DataFactory从C#控制台应用调用Azure Data Factory管道

如何使用Azure.ResourceManager.DataFactory从C#控制台应用调用Azure Data Factory管道

我太懂这种踩坑的感觉了——旧库用不了,GPT给的答案全是过时的,官方文档又绕来绕去找不到重点!别担心,我给你整理了一套用Azure.ResourceManager.DataFactory新库的完整步骤,亲测能用。

先做好准备工作

  • 给你的控制台项目安装两个必要的NuGet包:Azure.ResourceManager.DataFactory和Azure.Identity。前者是操作ADF的核心库,后者用来处理Azure身份验证,不用自己写复杂的密钥逻辑。
  • 确保你用来开发/运行程序的账户(或者部署后的托管身份)有足够的权限:至少需要Data Factory Contributor角色,或者单独分配Microsoft.DataFactory/factories/pipelines/createRun/action这个权限,不然触发管道时会报403错误。
  • 本地开发的话,记得先通过Azure CLI或者Visual Studio登录你的Azure账户,这样Azure.Identity才能自动获取凭据。

完整代码示例

下面是可以直接跑的代码,你只需要替换成自己的订阅ID、资源组、ADF名称和管道名称就行:

using Azure;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.DataFactory;
using Azure.ResourceManager.DataFactory.Models;

// 替换成你自己的ADF相关信息
var subscriptionId = "你的Azure订阅ID";
var resourceGroupName = "资源组名称";
var dataFactoryName = "数据工厂名称";
var pipelineName = "要触发的管道名称";

// 初始化ArmClient,用DefaultAzureCredential自动处理身份验证
var armClient = new ArmClient(new DefaultAzureCredential());

try
{
    // 一步步获取到目标数据工厂的资源对象
    SubscriptionResource subscription = await armClient.GetSubscriptionAsync(subscriptionId);
    ResourceGroupResource resourceGroup = await subscription.GetResourceGroups().GetAsync(resourceGroupName);
    DataFactoryResource dataFactory = await resourceGroup.GetDataFactories().GetAsync(dataFactoryName);

    // 准备管道运行参数(如果你的管道不需要参数,直接传null或者空字典就行)
    var pipelineRunParams = new Dictionary<string, object>
    {
        { "InputFilePath", "/data/input.csv" },
        { "OutputFilePath", "/data/output.csv" }
    };

    // 获取管道资源并触发运行
    DataFactoryPipelineResource pipeline = await dataFactory.GetDataFactoryPipelines().GetAsync(pipelineName);
    DataFactoryPipelineRun pipelineRun = await pipeline.CreateRunAsync(pipelineRunParams);

    Console.WriteLine($"管道已成功触发!运行ID: {pipelineRun.RunId}");

    // 可选:同步等待管道运行完成并实时输出状态(不需要的话可以删掉这部分)
    while (true)
    {
        await Task.Delay(5000); // 每5秒检查一次状态
        Response<DataFactoryPipelineRun> runResponse = await dataFactory.GetDataFactoryPipelineRunAsync(pipelineRun.RunId);
        var currentRun = runResponse.Value;

        Console.WriteLine($"当前运行状态: {currentRun.Status}");

        // 状态为成功、失败或取消时退出循环
        if (currentRun.Status is "Succeeded" or "Failed" or "Cancelled")
        {
            break;
        }
    }
}
catch (RequestFailedException ex)
{
    Console.WriteLine($"触发管道时出错: {ex.Message}");
    Console.WriteLine($"错误代码: {ex.ErrorCode}");
}

几个关键要点说明

  • DefaultAzureCredential是真的省心:它会自动适配不同环境——本地开发用你Azure CLI/VS登录的账户,部署到Azure后用托管身份,不用手动配置密钥或者连接字符串。
  • 权限问题一定要注意:如果运行时报403,先去Azure门户检查你的账户/身份有没有对应的ADF权限,别浪费时间在代码调试上。
  • 管道参数可以灵活处理:如果你的管道没有参数,直接给CreateRunAsync传null就可以;如果有参数,按照管道定义的参数名对应传值就行。
  • 等待运行状态的部分是可选的:如果你不需要同步等待管道完成,拿到RunId之后直接结束程序就行,之后可以去ADF门户查看运行详情。

备注:内容来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 12:45:27