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

标签 c# .net 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;
    }
}

最佳答案

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

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

return httpRequest.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);

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

关于c# - 从 Azure Function HttpTrigger 返回错误详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51212199/

相关文章:

c# - 使用 LINQ to SQL 查询中的数据填充 Excel

c# - 如何将按钮添加到任何 datagridview 列的最后一个单元格

c# - 将 DateTime 转换为字符串 "yyyy-mm-dd"

node.js - 为什么这个Azure时间触发功能不会失败?

Python Durable Function 不调用 Activity

azure - 在 kubernetes 中部署 azure 函数时如何检索函数键

c# - 解析 C# bootp 服务器的二进制数据?

c# - 读取/写入文件的最大并行度是多少?

c# - 在 C# 中以 Process.Kill() 终止的进程的退出代码

c# - 将分钟转换为小时、分钟和秒