更新 Power 应用使用的流时的最佳做法

本文介绍在 Power Apps 中运行 Microsoft 流时缓解常见错误的最佳做法和步骤。

适用于: Power Apps
原始 KB 编号: 4477072

流运行上的错误代码“InvokerConnectionOverrideFailed”

某些流无法在 Power Apps 中运行。 在流运行历史记录或 Power Apps 遥测中,可能会收到类似于以下内容的错误:

    { 
        "code": "InvokerConnectionOverrideFailed", 
        "message": "Failed to parse invoker connections from trigger 'manual' outputs. Exception: Could not find any valid connection for connection reference name '<some_connection>' in APIM tokens header." 
    }

注意

在 common Data Service (CDS) 调用 install API 时也会发生此错误,但响应是一般错误“安装流失败”。

原因

出现此问题的原因是流已更新为使用新连接,但应用仍使用旧的流元数据。 更新流不会更新使用该流的应用。 若要解决此问题,必须手动更新应用,以便更改反映在应用中,并且流才能正常工作。

缓解步骤

注意

请确保在源或开发环境中执行以下步骤并更新解决方案。 更新解决方案后,将其导入到所有目标或生产环境。

  1. 使用 最新版本的 Power Apps Studio 打开应用进行编辑。
  2. 从应用中删除流 (从 Power Automate 选项卡) 中删除流。
  3. 将流重新添加到应用。
  4. 保存并重新发布应用。

流运行上的错误代码“ConnectionAuthorizationFailed”

    { 
        "code": "ConnectionAuthorizationFailed", 
        "message": "The caller with object id '{user_id}' does not have the minimum required permission to perform the requested operation on connection '{some_connection_id}' under API '{some_connection_api}'." 
    }

原因

此错误意味着,尽管创建者有权访问流,但创建者无权访问流操作中使用的依赖连接。 这是 Power Apps 和 Flow 集成的一个限制。

缓解步骤

注意

请确保在源或开发环境中执行以下步骤并更新解决方案。 更新解决方案后,将其导入到所有目标或生产环境。

这种缓解措施是让流中的所有连接都归单个用户所有,然后让该用户将流添加到应用。

流运行上的错误代码“WorkflowTriggerIsNotEnabled”

    { 
        "code": "WorkflowTriggerIsNotEnabled", 
        "message": "Could not execute workflow '<GUID>' trigger 'manual' with state 'Disabled': trigger is not enabled."  
    } 

原因

此错误意味着该流已关闭。

缓解步骤

注意

请确保在源或开发环境中执行以下步骤并更新解决方案。 更新解决方案后,将其导入到所有目标或生产环境。

缓解措施是 打开流

流运行上的内部错误代码“ResponseTimeout”

        {
            "error": {
            "code": 504,
            "source": "<api hub source>",
            "clientRequestId": "<GUID>",
            "message": "BadGateway",
            "innerError": {
                "error": {
                    "code": "ResponseTimeout",
                    "message": "The server did not receive a timely response from the upstream server. Request tracking id '<some_tracking_id>'."
                    }
                }
            }
        } 

原因

此错误意味着同步流需要超过 120 秒 (2 分钟) 完成,从而导致它超时。 详细了解出站同步请求的超时限制。

缓解步骤

注意

请确保在源或开发环境中执行以下步骤并更新解决方案。 更新解决方案后,将其导入到所有目标或生产环境。

缓解措施是 查找哪个流运行时间过长 ,并使用 排查运行速度缓慢的流中提供的解决方案将其优化为在两分钟内运行。

流运行上的错误代码“0x80040265”或“0x80048d0b”

    {

        "code": " 0x80040265", 
        "message": "Failed to install the flow."  

    }  
    {

        "code": " 0x80048d0b", 
        "message": "Failed to install the flow."  

    } 

缓解步骤

注意

请确保在源或开发环境中执行以下步骤并更新解决方案。 更新解决方案后,将其导入到所有目标或生产环境。

尝试针对以下错误代码之一提到的解决方案:

流运行上的错误代码“MissingConnectionReference”

    { 
        "code": " MissingConnectionReference' ", 
        "message": " Connection reference '<connection name>' was not given by invoker."
    } 

示例错误:

调用程序未提供连接引用“<连接名称>”。

原因

实质上,应用和流元数据必须同步。 对流所做的任何更改都需要应用创建者使用流编辑应用,并删除或重新添加更改的流。

对于解决方案应用或流,应用可能会在源环境中成功调用流,然后在目标环境中失败,并显示以下错误消息:

未为此服务配置连接。

原因是目标环境中的流可能会发生更改,但源环境中不存在流。

缓解步骤

注意

请确保在源或开发环境中执行以下步骤并更新解决方案。 更新解决方案后,将其导入到所有目标或生产环境。

  1. 在源环境中,编辑应用。 删除流,然后将流重新添加到应用。 保存并发布更改。

  2. 在目标环境中,删除应用和流上的所有非托管层。

  3. 导出解决方案并将其导入目标环境。

    注意

    流或应用上都不能有非托管层,因为这可能会导致流连接出现问题。

流运行上的错误代码“NotAllowedConnectionReferenceon”

    {
        "code": " NotAllowedConnectionReference", 
        "message": "Connection reference '<connection name>' was not given by invoker."
    }

示例错误:

调用程序未提供连接引用“<连接名称>”。

原因

此错误意味着应用具有指定安装时需要 SQL 连接的流元数据,但实际流元数据不同。

缓解步骤

注意

请确保在源或开发环境中执行以下步骤并更新解决方案。 更新解决方案后,将其导入到所有目标或生产环境。

缓解选项 1

  1. 在源环境中,编辑应用。 删除流,然后将流重新添加到应用。 保存并发布更改。

  2. 在目标环境中,删除应用和流上的所有非托管层。

  3. 导出解决方案并将其导入目标环境。

    注意

    流或应用上都不能有非托管层,因为这可能会导致流连接出现问题。

缓解选项 2

  1. 将连接从 Embedded 更改为 Invoker
  2. 导航到流门户以编辑和更新流设置。
  3. 在流详细信息页上的“ 仅运行用户 ”部分中,选择 “编辑”。
  4. 若要将流连接源更新为 Invoker,请选择“ 由仅运行用户提供 ”并保存。
  5. 若要将流连接源更新为 Embedded,请选择“ 使用此连接 并保存”。
  6. 通过触发流进行验证。 你会看到“安装流网络”调用现在正在成功。

其他症状

更新流后,从 Power Apps 调用该流将开始失败。

  • 如果在未更新 Power App 的情况下将新输入添加到流中,该流将失败并显示类似于以下内容的错误消息:

    无法处理第 1 行和列“1900”的操作“Send_me_a_mobile_notification”输入中的模板语言表达式:“无法计算模板语言表达式'triggerBody () ['Sendmeamobilenotification_Text']”,因为无法选择属性“Sendmeamobilenotification_Text”。 有关使用情况的详细信息,请参阅 https://aka.ms/logicexpressions 。'。

    在不更新 Power App 的情况下将新输入添加到流时错误消息的屏幕截图。

  • 如果运行流所需的连接发生更改,应显示有关连接投诉的错误:

    在 Power Apps 中,它可能如下所示:

    有关 Power Apps 中的连接的错误消息的屏幕截图。

    或者,在 Flow 中,它可能如下所示:

    无法处理第 1 行和列“1899”的操作“Send_an_email”输入中的模板语言表达式:“模板语言表达式'json (解码Base64 (triggerOutputs () .headers['” X-MS-APIM-Tokens']) ) ['$connections']['shared_office365']['connectionId']' 无法计算,因为属性“shared_office365”不存在,可用属性为“shared_flowpush”。 有关使用情况的详细信息,请参阅 https://aka.ms/logicexpressions 。'。

    错误消息的屏幕截图,其中抱怨 Flow 中的连接。

  • 如果删除响应输出,则 Power Apps 会将该值视为空白,并且 Power App 将发生意外行为。

原因

若要从 Power Apps 调用流,Power Apps 需要知道流需要哪些输入、要向流提供哪些连接,以及流将返回哪些输出。 Power Apps 将此信息存储在 Power App 的定义中,该定义在 Power App 版本与其中使用的流之间创建绑定。 更改流的这三个方面中的任何一个都可能会中断与该流集成的所有以前版本的 Power Apps。 若要修复受影响的 Power App 或使用这些流更改之一,需要更新 Power App。

最有可能破坏 Power Apps 调用流的更改类型包括:

  • 在 Power Apps 中添加新的 Ask 令牌。

    添加新的“Power Apps 中的 Ask”令牌的屏幕截图。

  • 添加新连接。 例如,通过添加以前未像 SharePoint 连接器那样使用的连接器中的新操作。

    屏幕截图显示了添加新连接的示例。

  • 更改现有连接。 例如,将现有连接更改为新连接。

    更改 Flow 中现有连接的屏幕截图。

  • 从“响应 Power Apps”操作中删除输出。

    从“响应 Power Apps”操作中删除输出的屏幕截图。

对输入或输出的其他更改不会中断 Power Apps 和 Flow 之间的集成,但需要更新 Power App,以便可以使用它们。

解决方案

更改实时 Power 应用

发布 Power App 后,始终建议创建 Power Apps 用于进行任何更新的流的副本。 对实时 Power 应用引用的流的任何更新都有可能中断现有用户。 在所有用户升级到 Power App 的新发布版本之前,请勿删除或关闭现有流。

通过选择“另存为”选项创建 Power App 使用的流副本的屏幕截图。

在新版本的 Power App 中,引用新流。 发布新版本的 Power App 后,用户将开始使用具有正确输入、输出和连接的新流。 这将防止新版本 Power Apps 的流更新影响现有版本的用户。

更改 Power App 开发版本

在开发 Power 应用时,可以轻松更改 Power App 的实时版本未使用的流。 对未发布的流的输入、输出或连接进行更改后,请从“ ”窗格中重新选择流。

在 Power Apps 中更新流定义的屏幕截图。

它将更新 Power App 中流的定义,验证 Power App 中使用了正确的输入、输出和连接。

Power App 的用户在发布 Power App 之前不会开始使用新流。 因此,在 Power App 的实时版本使用它之前,更新现有流是可以的。