【问题标题】:How can I manually mark an invocation as Failure in an Azure Function?如何在 Azure 函数中手动将调用标记为失败?
【发布时间】:2017-03-14 09:38:55
【问题描述】:

我已经尝试了很多方法,但我可以强制 AzFn 了解调用失败的唯一方法是抛出异常而不处理它。因此,如果我返回 HttpResponseException,AzFn 会将调用视为成功。感觉不对。

catch (Exception ex)
    {
        logger.Error($"{nameof(ex)}: {ex.Message}", ex);
        response = req.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message, ex);

    }

这应该会产生一个标记为失败的调用,但它不会。

【问题讨论】:

标签: azure azure-functions csx


【解决方案1】:

您的函数抛出的任何异常都会将该函数标记为失败。在您上面的代码中,您正在吞噬异常,因此我们认为它是成功的。如果您改为重新抛出异常,该函数将被标记为失败。在这种情况下,我们将代表您自动退回 500。

我们不看你返回的HttpStatusCode来判断函数是否成功,只看函数是否成功运行到完成w/o异常。如果您的函数能够返回响应,那么从我们的角度来看,它是成功的。

【讨论】:

  • 谢谢。有道理 - 在文档中找不到任何细节或最佳实践。
  • 这是有道理的,但似乎如果您抛出未捕获的异常以将作业标记为失败,那么输出绑定将被忽略。
  • 我认为这没什么用。在异常情况下,理想情况下,希望向调用者返回一个简短且有用的响应,同时仍记录异常并将此请求标记为失败。
  • 我完全同意@NitinBadole。当前的机制具有误导性。
  • @mathewc 还是这样吗?我们需要向调用者返回一个有用的消息,同时将函数标记为Failed。结合returnthrow 是不可能的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-21
  • 1970-01-01
  • 2017-12-02
  • 2022-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-10-08
相关资源
最近更新 更多