Azure Function被Logic App调用时换行符重复问题求助
解决Logic App调用Azure Function时换行符重复的问题
可能的解决方法:
1. 规范Azure Function的响应序列化方式
不要手动拼接JSON字符串,直接用官方序列化库处理响应对象,避免手动转义导致的二次转义问题。
以C#为例,直接返回强类型对象让Function Runtime自动处理序列化:
var responseObj = new { IsSuccess = true, StatusCode = 200, Content = ":20:XXXXXXXXXXXXXXX\n:25:XXXXXXXXXXXXXXXXXXX\n:28C:XXXXX/XXX\n-" }; return new OkObjectResult(responseObj);
避免自行调用JsonConvert.SerializeObject再返回字符串,这种手动操作容易让Logic App对换行符重复转义。
2. 检查Logic App的响应处理逻辑
确认Logic App里是否对响应的Content字段做了额外的字符串处理(比如替换、格式化),排查是否有步骤意外将单个\n替换成了\n\n。
直接使用响应的原始值,比如用body('HTTP')?['Content']直接取值,跳过不必要的文本转换操作。
3. 明确设置JSON序列化的转义规则
在Azure Function中,指定序列化配置,强制控制换行符的转义行为。比如用System.Text.Json时:
var options = new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, WriteIndented = false }; var jsonString = JsonSerializer.Serialize(responseObj, options); return new ContentResult { Content = jsonString, ContentType = "application/json; charset=utf-8", StatusCode = 200 };
关闭自动缩进也能避免额外换行符的插入。
4. 尝试Base64编码传输(可选)
如果纯文本内容特殊字符较多,可在Azure Function中将Content转为Base64字符串,在Logic App中再解码:
- Function端:
Content = Convert.ToBase64String(Encoding.UTF8.GetBytes(originalContent)) - Logic App端:使用
base64ToString(body('HTTP')?['Content'])函数解码。
内容的提问来源于stack exchange,提问作者drewglew
相关产品推荐
相关产品推荐

