Logic App无法反序列化Azure数据工厂管道错误消息

时间:2020-08-03 15:13:44

标签: azure-logic-apps azure-data-factory-2

我正在使用Logic App面对Azure数据工厂的以下问题。

我正在使用Azure数据工厂管道进行迁移,并使用Logic App将“成功与失败”通知发送给技术团队。 现在,由于对消息进行了硬编码,因此成功运行良好,但是由于Logic App Web活动无法解析数据工厂管道错误,因此失败并非如此。

这是去Logic App Web活动的输入 输入

{
"url": "https://xxxxxxxxxxxxxxxxx",
"method": "POST",
"headers": {},
"body": "{\n \"title\": \"PIPELINE RUN FAILED\",\n \"message\":\"Operation on target Migration Validation failed: Execution fail against sql server. Sql error number: 50000. Error Message: The DELETE statement conflicted with the REFERENCE constraint \"FK_cmclientapprovedproducts_cmlinkclientchannel\". The conflict occurred in database \"Core7\", table \"dbo.cmClientApprovedProducts\", column 'linkclientchannelid'.\",\n \"color\": \"Red\",\n \"dataFactoryName\": \"LFC-TO-MCP-ADF\",\n \"pipelineName\": \"LFC TO MCP MIGRATION\",\n \"pipelineRunId\": \"f4f84365-58f0-4da1-aa00-64c3a4daa9e1\",\n \"time\": \"2020-07-31T22:44:01.6477435Z\"\n}"
}

这是应用程序抛出的错误逻辑

failures
    {
    "errorCode": "2108",
    "message": "{\"error\":{\"code\":\"InvalidRequestContent\",\"message\":\"The request content is not valid and could not be deserialized: 'After parsing a value an unexpected character was encountered: F. Path 'message', line 3, position 202.'.\"}}",
    "failureType": "UserError",
    "target": "Send Failed Notification",
    "details": []
    }

我尝试了各种选项,例如设置变量并使用各种现有方法(字符串,json,replace等)进行转换,但是没有运气 例如@string(activity('LOS migration').Error.Message) 几乎整天都在挣扎...请建议是否有人遇到类似的问题...

以下是数据流活动 enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

对于失败情况,请使用@{activity('LOS migration').error.message传递错误输出。

对于发送电子邮件,它不知道是否要发送失败或成功的电子邮件。我们必须调整身体,以便活动可以使用参数,稍后我们将对其进行定义:

{
   "DataFactoryName": "@{pipeline().DataFactory}",
   "PipelineName": "@{pipeline().Pipeline}",
   "Subject": "@{pipeline().parameters.Subject}",
   "ErrorMessage": "@{pipeline().parameters.ErrorMessage}",
   "EmailTo": "@pipeline().parameters.EmailTo"
}

我们可以使用以下格式在正文中引用此变量:@pipeline().parameters.parametername。有关更多详细信息,请参阅此article

答案 1 :(得分:0)

现在它正在工作... 将主体内容粘贴到主体文本字段框中,而无需在调用Logic App的网络活动中单击“添加动态内容”。

答案 2 :(得分:0)

如果您想使用数据工厂活动的直接错误消息作为逻辑应用电子邮件表达式的输入,您可以尝试。

"ErrorMessage": "@{string(replace(activity('activity_name').Error.Message, '"',''''))}"

将“activity_name”替换为您失败的活动名称。