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

Azure Function PowerShell解析POST请求体失败问题求助

Azure Synapse触发PowerShell Azure Function无法解析POST Body字段

问题现象

从Azure Synapse触发PowerShell Azure Function时,POST请求Body中的字符串无法正确解析为对象,region和environment字段始终为空。

函数日志输出

2023-05-12T11:17:13Z   [Information]   INFORMATION: region: 
2023-05-12T11:17:13Z   [Information]   INFORMATION: environment: 

Synapse管道中Azure Function组件的输入配置

{
    "functionName": "MyFunc",
    "method": "POST",
    "headers": {},
    "body": "{environment: 'q', region: 'de', delta: 'true'}"
}

Azure Function的PowerShell代码

using namespace System.Net
param($Request)
$request_body = $Request.Body | ConvertFrom-Json

$region = $request_body.region
$environment = $request_body.environment
Write-Host "Loaded runtime config from request body."
Write-Host "region: $region"
Write-Host "environment: $environment"

本地测试结果(可正常解析)

PS > $a = "{environment: 'q', region: 'de', delta: 'true'}"
PS > $b = $a | ConvertFrom-Json
PS > $b
environment region delta
----------- ------ -----
q           de     true
PS > Write-Host $b.environment
q

解决方案

方案1:修改Synapse的Body为标准JSON格式

标准JSON要求键名和字符串值都使用双引号,同时在Synapse的JSON配置中需要转义双引号:

{
    "functionName": "MyFunc",
    "method": "POST",
    "headers": {},
    "body": "{\"environment\": \"q\", \"region\": \"de\", \"delta\": \"true\"}"
}

方案2:在PowerShell函数中兼容非标准JSON

如果无法修改Synapse的输入,可在函数中将请求体转为字符串后替换单引号为双引号,再进行解析:

using namespace System.Net
param($Request)
# 将请求体转为字符串,替换单引号为双引号以符合标准JSON格式
$request_body_str = $Request.Body.ToString() -replace "'", '"'
$request_body = $request_body_str | ConvertFrom-Json

$region = $request_body.region
$environment = $request_body.environment
Write-Host "Loaded runtime config from request body."
Write-Host "region: $region"
Write-Host "environment: $environment"

原因说明

本地PowerShell的ConvertFrom-Json对非标准JSON(单引号)有宽松支持,但Azure Function运行时依赖的.NET JSON解析器要求严格遵循JSON规范(必须使用双引号)。同时,Azure Function中的$Request.Body可能以流形式存在,而非直接字符串,需要先转换为字符串再处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:32:48