【问题标题】:Azure function success status is true even when result code is 500即使结果代码为 500,Azure 函数成功状态也为真
【发布时间】:2020-03-06 17:18:07
【问题描述】:

我有一个 azure 函数,其中包含一些带有非常基本的 try catch 的逻辑(为简洁起见缩短了代码)

    try {
        // do logic here that can potentially fail
    } catch (ex) {
        context.log(`Log details about the exception: ${ex.message}`);
        context.res = {
            status: 500,
            headers: {
                "Content-Type": "application/json" 
            },
            body: {
                message: ex.message
            }
        };

        return;
    }

因此,如果在该逻辑期间发生异常,我会处理异常并优雅地返回 http 响应并终止应用程序。我希望 azure 函数会将 500 个状态代码视为失败(考虑到它们是内部服务器错误),但我的函数仍被认为已成功执行。考虑到这是一个低容量函数,对其上下文的重要性有点高,我会收到所有失败的通知。

犯错的明智之举是什么?我是否在这里抛出异常而不是简单地返回?

【问题讨论】:

  • 您是否从 azure 功能的 Monitor 选项卡中看到了状态?
  • 是的,这就是我所指的状态,并且似乎是 azure monitor 规则评估中使用的状态。
  • 您好,请问accept it as answer 有帮助吗?如果您还有更多问题,请告诉我。谢谢。

标签: typescript azure azure-functions


【解决方案1】:

这是 azure 函数状态检查的内部行为。

1。如果您的代码使用try catch block处理错误并手动返回500,则azure函数将其视为成功。

2。但是如果错误没有被使用try catch block的代码处理,则会被标记为失败。

详情请参阅this issue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多