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

如何调试带参数和CSV文件的HTTP触发型Azure Function

解决方案

问题根因

你当前的报错源于代码逻辑直接将完整HTTP请求体作为JSON格式反序列化,但传输带文件的请求时,请求体为multipart/form-data(表单格式)或二进制流,不符合JSON格式要求,因此反序列化直接抛出异常。
相关配置截图:
相关配置截图

步骤1:调整Azure Function请求解析逻辑

替换原直接读取全量请求体反序列化的逻辑,改为先解析多部分表单内容,分别提取参数和文件,参考代码如下:

public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
    ILogger log)
{
    // 优先从Query中读取两个参数,兼容原有GET请求逻辑
    string name = req.Query["name"];
    string source = req.Query["source"];
    
    // 处理带文件的表单请求
    if (req.ContentType.StartsWith("multipart/form-data"))
    {
        var formCollection = await req.ReadFormAsync();
        // 兼容参数放在表单内的场景
        name ??= formCollection["name"];
        source ??= formCollection["source"];
        
        // 读取CSV文件附件,key需和Postman/Logic App配置的文件key一致
        var csvFile = formCollection.Files.GetFile("csv_file");
        if (csvFile != null && csvFile.Length > 0)
        {
            using var streamReader = new StreamReader(csvFile.OpenReadStream());
            string csvContent = await streamReader.ReadToEndAsync();
            // 此处添加你的CSV处理逻辑
        }
    }
    // 保留原有纯JSON请求逻辑,兼容其他调用场景
    else if (req.ContentType == "application/json")
    {
        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        dynamic data = JsonConvert.DeserializeObject(requestBody);
        name ??= data?.name;
        source ??= data?.source;
    }

    // 后续业务逻辑
    return new OkObjectResult($"参数name:{name}, source:{source},文件读取完成");
}

步骤2:Postman调试请求配置

  1. 请求方法选POST,地址填本地调试地址http://localhost:7071/api/TradematchHttpFunctions
  2. 两种传参方式二选一,和你Logic App的传参逻辑对齐即可:
    • 方式一:在Params栏直接填写name、source两个参数和对应值,参数会自动拼接在URL查询串中
    • 方式二:在Body的form-data中添加两个Text类型字段,key分别为name、source,填写对应值
  3. Body区选择form-data,添加文件字段:
    • 新建字段key填写你代码中约定的文件标识(比如上述示例的csv_file),鼠标悬浮在key输入框右侧,下拉选择「File」类型
    • 在Value栏点击「Select Files」,选择本地待上传的CSV文件
  4. 点击发送即可正常触发函数调试,不会再出现JSON反序列化报错。

步骤3:对齐Logic App调用配置

要保证线上Logic App调用正常,只需确认Logic App的HTTP动作配置:

  • 请求方法选POST
  • 参数按你实际需求配置在URL查询串或者表单字段中
  • 文件上传部分选择multipart/form-data格式,文件的key和你函数代码中的读取key保持一致即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:39:04