我使用ADFv2传输一些数据。作为此操作的一部分,我需要将一些配置值传递到管道中。
必须在运行时从REST服务中提取配置值 - 而不是作为参数。
我可以使用Web Activity成功查询REST服务,我可以在调试视图中看到输出。
现在问题是:)
如何在管道中的其他活动中使用此输出?
我的网络活动配置如下:
{
"name": "Web1",
"type": "WebActivity",
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false
},
"typeProperties": {
"url": "https://myazurefunction.azurewebsites.net/api/MyFunction",
"method": "GET",
"headers": {
"Content-Type": "application/json"
}
}
我已经尝试在执行后访问输出,但它似乎是空的:
@activity('Web1').Output
@activity('Web1').output
@string(activity('Web1').Output)
他们都是空的。有什么建议? 谢谢!
答案 0 :(得分:3)
我设置了ADF2并尝试获得响应。
这对我有用:
@string(activity('Post').output)
您是否在调试中检查了输出?
这是我的输出:
{
"test": {
"value": 123,
"text": abc
},
"concat": 123abc
}
我使用存储过程将值插入逻辑服务器上的目标表。
答案 1 :(得分:2)
在ADFv2中,您可以使用@activity('ActivityName').output
访问先前活动的输出。
对于定义的Web活动,函数的响应应为JSON格式,因此您将在响应中使用其属性名称引用特定的JSON值。例如,您定义的Web活动Web1调用一个函数,该函数返回以下响应:
{
"foo": "bar",
"some": "value"
}
要在后续的ADF活动中使用foo
的值,请引用@activity('Web1').output.foo
。如果需要将返回值转换为另一种类型,则ADFv2提供了多种类型转换功能。
如果您的函数返回了一个空的JSON响应,则您可能希望使用Postman或其他工具检查函数的响应,以确保您返回的是格式正确的响应,并且您的函数不会因为其他原因而失败
在Azure函数代码中,您应该返回一个JSON对象以及成功代码,类似于return req.CreateResponse(HttpStatusCode.OK, json);
。
还请注意,如果您引用响应的属性并且该属性不存在,则ADF会在此时失败,因此您可以使用If Condition活动检查所需的值,以更好地处理ADFv2中的失败。