C# HTTP触发器在Azure函数v2中不返回stacktrace

C# HTTP触发器在Azure函数v2中不返回stacktrace,c#,azure,azure-functions,C#,Azure,Azure Functions,考虑一个引发异常的简单HTTP触发器。当我通过Postman调用这个触发器时,它返回一个500内部服务器错误,但正文是空的。作为一名开发人员,我希望看到stacktrace,以便能够快速调试正在发生的事情 // Azure Functions v2 [FunctionName("HttpTrigger2")] public static async Task<HttpResponseMessage> HttpTrigger2( [HttpTrigger(AuthorizationLe

考虑一个引发异常的简单HTTP触发器。当我通过Postman调用这个触发器时,它返回一个500内部服务器错误,但正文是空的。作为一名开发人员,我希望看到stacktrace,以便能够快速调试正在发生的事情

// Azure Functions v2
[FunctionName("HttpTrigger2")]
public static async Task<HttpResponseMessage> HttpTrigger2(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequestMessage req)
{
    throw new System.Exception("I want to be in the response body.");
}
//Azure函数v2
[函数名(“HttpTrigger2”)]
公共静态异步任务HttpTrigger2(
[HttpTrigger(AuthorizationLevel.Anonymous,“get”,“post”,Route=null)]HttpRequestMessage请求)
{
抛出新的System.Exception(“我想在响应体中”);
}
这是在本地运行的。我还没有远程测试过这个

我相信Azure Functions v1确实显示了stacktrace


我知道检查日志有多种方法,例如通过将环境连接到AppInsights。我正在寻找的是服务器的即时响应。

根据设计,v2函数不再像v1那样返回堆栈跟踪。在远程Azure站点上,v1和v2函数都不会返回堆栈跟踪。设计合理,使用堆栈跟踪进行调试,而响应体显然不是。当堆栈跟踪作为响应返回时,我们似乎暴露了冗长的、有时是私有的信息

如果我们想在本地调试时方便地将异常作为响应获取,那么捕获异常并将其作为响应返回

使用
HttpRequestMessage

        try
        {
            throw new System.Exception("I want to be in the response body.");
        }
        catch (Exception exception)
        {
            log.LogError(exception, exception.Message);
            return req.CreateResponse(HttpStatusCode.InternalServerError, exception);
        }
在v2中,我们还可以使用
HttpRequest
,响应类型应该是
IActionResult

        try
        {
            throw new System.Exception("I want to be in the response body.");
        }
        catch(Exception exception)
        {
            log.LogError(exception, exception.Message);
            var res = new ObjectResult(exception)
            {
                StatusCode = StatusCodes.Status500InternalServerError
            };
            return res;
        }

@唐纳德,请解释一下这个问题是如何改进的。嗨,托马斯,你需要进一步的帮助吗?如果解决方案可以接受,你介意接受其他人参考的解决方案吗?嗨,杰瑞。我还没有试过(还有其他的事情)。一旦我试过,我会让你知道。:)很好,请在方便的时候回复。现在,AppInsights的
异常
表中没有记录异常。有没有一种方法可以将其记录在AI中并作为响应返回?@ThomasSchreiter只需添加
log.LogError(exception,exception.Message)在我们返回响应之前,不要忘记添加local.settings.json。