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

如何在Azure逻辑应用的XSLT 3.0中调用C# Azure函数应用?

在Azure逻辑应用的XSLT 3.0中调用C# Azure函数的方案

针对你的迁移场景,以下是三种可行的实现方案:

方案一:XSLT 3.0直接调用Azure函数HTTP端点(基于Saxon PE/EE)

Saxon专业版(PE)或企业版(EE)支持XSLT 3.0的fn:unparsed-text()或fn:json-doc()函数发起HTTP请求,可直接调用Azure函数的HTTP触发端点。

实现步骤:

  1. 将Azure函数配置为HTTP触发,设置合适的访问权限(匿名或密钥验证),确保返回纯字符串或JSON格式结果。
  2. 在XSLT中编写调用代码:
    • 若函数返回纯文本:
      <xsl:variable name="func-result" select="unparsed-text('https://your-function-url/api/your-function?param=xxx')"/>
      
    • 若函数返回JSON(如{"data":"目标字符串"}):
      <xsl:variable name="func-json" select="json-doc('https://your-function-url/api/your-function?param=xxx')"/>
      <xsl:variable name="func-result" select="$func-json?data"/>
      
  3. 在转换逻辑中直接使用$func-result变量即可。

注意:

仅Saxon PE/EE版本支持HTTP请求功能,基础版(HE)无此能力;需确保逻辑应用所在网络可访问Azure函数端点。

方案二:通过逻辑应用编排拆分流程(推荐)

无需在XSLT内部调用函数,利用逻辑应用的编排能力,先获取函数返回值,再传入XSLT映射。这种方式更贴合逻辑应用的设计思路,且无需依赖Saxon高级版本。

实现步骤:

  1. 在逻辑应用流程中添加调用Azure函数动作,配置函数触发参数,获取返回的字符串值。
  2. 添加XSLT映射动作,将上一步的函数返回值作为参数传入映射。
  3. 在XSLT中定义接收参数的模板:
    <xsl:param name="external-data"/>
    <!-- 在转换逻辑中直接使用参数 -->
    <target-node><xsl:value-of select="$external-data"/></target-node>
    

优势:

  • 流程清晰,便于调试和维护;
  • 支持Saxon基础版(HE),无需额外付费;
  • 可将调用Azure函数的步骤封装为逻辑应用子流程,供多个XSLT映射复用。

方案三:使用Saxon .NET扩展函数(外部程序集)

如果必须在XSLT内部直接调用函数,可开发Saxon的.NET扩展函数,将调用逻辑封装为程序集,上传到Azure集成账户后在XSLT中引用。

实现步骤:

  1. 创建.NET类库项目,实现Saxon扩展函数:
    using Saxon.Api;
    public class FuncCallHelper
    {
        [ExtensionFunction(Name = "invoke-azure-func", NamespaceUri = "http://your-custom-namespace")]
        public static XdmValue InvokeAzureFunction(XdmValue funcUrl)
        {
            // 编写HTTP调用Azure函数的逻辑
            using (var client = new HttpClient())
            {
                var response = client.GetStringAsync(funcUrl.ToString()).Result;
                return new XdmAtomicValue(response);
            }
        }
    }
    
  2. 将编译后的DLL上传到Azure集成账户的程序集库中。
  3. 在XSLT中声明命名空间并调用扩展函数:
    <xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    xmlns:custom="http://your-custom-namespace"
                    extension-element-prefixes="custom">
        <xsl:variable name="func-result" select="custom:invoke-azure-func('https://your-function-url/api/your-function')"/>
        <!-- 使用变量完成转换 -->
    </xsl:stylesheet>
    

注意:

需确保集成账户的程序集配置正确,逻辑应用具备访问权限;扩展函数需处理网络异常等边界情况。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:55:18