Должно быть, по замыслу, функция 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);
}
В версии 2 мы также можем использовать 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;
}