从 Azure Function HttpTrigger 返回错误详细信息

Þór*_*hie 5 .net c# azure-functions

我创建了一个带有 HTTP 触发器的 Azure 函数。我希望将详细的错误信息返回给调用者。有没有办法处理未捕获的异常?奇怪的是,Azure Functions 在 Visual Studio 中运行时确实返回详细的错误信息,但在部署时却不会。

[FunctionName("MyAzureFunction")]
public static async Task<HttpResponseMessage> RunAsync(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage httpRequest,
    TraceWriter traceWriter,
    CancellationToken cancellationToken)
{
    try
    {                
        var response = await ProcessAsync(request, cancellationToken);

        return httpRequest.CreateResponse(HttpStatusCode.OK, response);
    }
    catch (ArgumentException ex)
    {
        traceWriter.LogWarning($"Argument error: {ex}");
        return httpRequest.CreateResponse(HttpStatusCode.BadRequest, ex.Message);
    }
    catch (Exception ex)
    {
        traceWriter.LogError($"Error: {ex}");
        throw;
    }
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*kov 4

一般来说,从安全角度等角度来看,将异常详细信息返回给外部调用者被认为是不好的做法。因此,默认情况下阻止此信息是有意义的。

我会将throw;语句替换为返回手动格式化错误的语句。如果您同意向调用者公开异常消息,那么就像这样简单

return httpRequest.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
Run Code Online (Sandbox Code Playgroud)

如果调用者是外部的,我也不会这样做:相反,返回通用错误消息,然后依赖日志记录进行调试。