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

如何在Azure Function App中使用.NET SDK对接Sage Intacct同步数据

解决方案

步骤1:确认Azure Function项目兼容性

  • 检查Visual Studio 2019创建的Azure Function项目的.NET运行时版本,Intacct.SDK支持.NET Standard 2.0、.NET 6+,建议使用.NET 6 LTS版本的Function项目(可选择进程内或隔离进程模型)
  • 禁止使用.NET Framework版本的Function项目,会因依赖不兼容导致相关程序集发布时不被打包

步骤2:修正Nuget包引用方式

  • 不要手动复制SDK的.cs源码文件到项目中,所有依赖完全通过Nuget管理:右键Function项目 → 管理Nuget程序包 → 确认已安装Intacct.SDK稳定版
  • 清理本地缓存:点击顶部菜单「生成」→「清理解决方案」,删除项目根目录下的bin、obj文件夹后重新生成解决方案,确保生成输出无依赖缺失警告

步骤3:配置SDK凭证与函数逻辑

  • 本地调试时在local.settings.json中添加配置项,发布后将对应配置录入Azure门户的Function应用「配置」→「应用程序设置」中,避免硬编码凭证:
{
  "Values": {
    "Intacct_SenderId": "你的SenderID",
    "Intacct_SenderPassword": "你的Sender密码",
    "Intacct_UserId": "你的Intacct用户ID",
    "Intacct_UserPassword": "你的用户密码",
    "Intacct_CompanyId": "你的公司ID"
  }
}
  • HTTP触发函数示例代码:
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Intacct.SDK;
using Intacct.SDK.Functions.Common.Query;

namespace YourFunctionNamespace
{
    public static class PullSageIntacctData
    {
        [FunctionName("PullSageIntacctData")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("开始拉取Sage Intacct数据");

            var clientConfig = new ClientConfig
            {
                SenderId = Environment.GetEnvironmentVariable("Intacct_SenderId"),
                SenderPassword = Environment.GetEnvironmentVariable("Intacct_SenderPassword"),
                UserId = Environment.GetEnvironmentVariable("Intacct_UserId"),
                UserPassword = Environment.GetEnvironmentVariable("Intacct_UserPassword"),
                CompanyId = Environment.GetEnvironmentVariable("Intacct_CompanyId")
            };

            var intacctClient = new OnlineClient(clientConfig);
            // 示例:拉取总账科目数据,可按需替换为你需要的业务对象查询逻辑
            var query = new ReadByQuery
            {
                ObjectName = "GLACCOUNT",
                Fields = new[] { "ACCOUNTNO", "TITLE", "ACCOUNTTYPE" }
            };

            var response = await intacctClient.Execute(query);
            // 返回数据供Azure Data Factory调用处理
            return new OkObjectResult(response.Results[0].Data);
        }
    }
}

步骤4:调整发布配置

  • 右键Function项目点击发布,确认部署模式选「框架依赖」,目标运行时与本地开发环境一致(推荐Linux-x64,成本更低)
  • 打开发布配置的编辑页,「文件发布选项」勾选「在发布前删除所有现有文件」,避免缓存文件影响
  • 发布完成后可进入Azure门户Function的「高级工具」Kudu控制台,查看site/wwwroot/bin目录下是否存在Intacct.SDK.dll,存在即说明打包发布成功

步骤5:对接下游流程

函数测试正常后,在Azure Data Factory中创建HTTP链接服务指向该Azure Function调用地址,用Function密钥做身份认证,拉取数据后按需求做转换写入Azure SQL Server即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:06:04