我试图使用Azure Logic SDK更新逻辑应用的复发频率和间隔,并将其与该错误消息更新触发频率使用API
Microsoft.Rest.Azure.CloudException失败:不支持修补工作流程“kk-test-logic-app”的请求。 属性对象内的任何字段都不能打补丁。
这是一段代码片段,显示了我正在尝试做什么。
var workflow = await _client.Value.Workflows.GetAsync(resourceGroupName, workflowName);
dynamic workflowDefinition = workflow.Definition;
workflowDefinition.triggers[triggerName]["recurrence"] = JToken.FromObject(new { frequency = triggerFrequency, interval = triggerInterval });
await _client.Value.Workflows.UpdateAsync(resourceGroupName, workflowName, workflow);
其中_client是Lazy<LogicManagementClient>
。
这里是触发我想更新的定义(有使用招):
"triggers": {
"When_a_new_email_arrives": {
"recurrence": {
"frequency": "Hour",
"interval": 2
},
"splitOn": "@triggerBody()?.value",
"type": "ApiConnection",
"inputs": {
"host": {
"api": {
"runtimeUrl": "https://logic-apis-southindia.azure-apim.net/apim/office365"
},
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "get",
"path": "/Mail/OnNewEmail",
"queries": {
"folderPath": "Inbox",
"importance": "Any"
}
}
}
}
注意,我能够成功地检索流程,workflowRuns,workflowTriggers等只有更新操作失败。有关如何使用SDK更新工作流属性的任何想法?
UPDATE: 由于在下面的评论中指出奥马尔-MSFT,这是一个缺陷,并作为一种解决方法,我目前使用的CreateOrUpdateAsync代替UpdateAsync。已在GitHub中创建了一个new defect,以使其得到SDK开发团队的关注。
触发器当前每30秒执行一次,检查是否收到来自某个电子邮件地址的新邮件,并且运行正常。我试图使用我提供的代码将重现频率从30秒改为2小时。请注意,这只是我正在做的POC,生产代码会有很大不同。 – Karthikeyan
好的。感谢您在源代码中指出我的问题。看看[CreateOrUpdateAsync](https://github.com/Azure/azure-sdk-for-net/blob/psSdkJson6/src/SDKs/Logic/Management.Logic/Generated/WorkflowsOperations.cs#L729),我可以看到CreateOrUpdateAsync使用PUT HTTP方法。更改我的代码以使用CreateOrUpdateAsync现在正确地更新重复频率。 – Karthikeyan
我很高兴听到您的问题已解决,请将有用的答复标记为答案。它会帮助其他人快速找到并解决类似的问题。 – Amor