Возврат сведений об ошибке из функции Azure HttpTrigger - PullRequest
0 голосов
/ 06 июля 2018

Я создал функцию Azure с триггером HTTP. Я хотел бы, чтобы подробные сведения об ошибках возвращались звонящим. Есть ли способ сделать для неисследованных исключений? Как ни странно, функции Azure возвращают подробную информацию об ошибках при запуске в 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;
    }
}

1 Ответ

0 голосов
/ 06 июля 2018

Как правило, возврат сведений об исключении внешнему вызывающему абоненту считается плохой практикой с точки зрения безопасности и иным образом. Из-за этого имеет смысл блокировать эту информацию по умолчанию.

Я бы заменил throw; на оператор, возвращающий ошибку, отформатированную вручную. Если у вас все в порядке с сообщением об исключении для вызывающего абонента, это просто, как

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

Если вызывающая сторона внешняя, опять же, я бы этого не делал: вместо этого возвращаю общее сообщение об ошибке, а затем полагаюсь на ведение журнала для отладки.

...