#c# #azure #azure-functions
#c# #azure #azure-функции
Вопрос:
У меня есть следующая функция Azure:
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
ILogger log, ExecutionContext context)
{
GetForumTopicsResponseModel forumTopicsModel = new GetForumTopicsResponseModel();
try
{
HtpaaForumDB.HtpaaForumDB forumDB = new HtpaaForumDB.HtpaaForumDB(context);
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
GetForumTopicsTokenRequestModel reqMod = JsonConvert.DeserializeObject<GetForumTopicsTokenRequestModel>(requestBody);
log.LogInformation("index:" reqMod.IndexStart " count:" reqMod.Count);
List<Topic> topics = await forumDB.GetTopics(reqMod.SortOrder, reqMod.IndexStart, reqMod.Count);
log.LogInformation("Count:" topics.Count);
forumTopicsModel.Topics = topics;
forumTopicsModel.StatusCode = HttpStatusCode.OK;
}
catch (Exception ex)
{
log.LogCritical(ex,"Error");
forumTopicsModel.Message = ex.Message;
forumTopicsModel.StatusCode = HttpStatusCode.BadRequest;
}
return new ObjectResult(forumTopicsModel);
Все работает, как и ожидалось, когда я запрашиваю 2 темы форума, но выдает мне ошибку 500, если я запрашиваю больше. Журнал, по-видимому, указывает на то, что внутри функции все идет по плану:
2020-11-23T12:17:00.716 [Information] Executing 'GetForumTopics' (Reason='This function was programmatically called via the host APIs.')
2020-11-23T12:17:00.758 [Information] index:0 count:2
2020-11-23T12:17:00.847 [Information] Count:2
2020-11-23T12:17:00.854 [Information] Executed 'GetForumTopics' (Succeeded, Duration=138ms)
Приведенный выше журнал приводит к коду 200 и набору данных, как и ожидалось
2020-11-23T12:14:05.133 [Information] Executing 'GetForumTopics' (Reason='This function was programmatically called via the host APIs.', )
2020-11-23T12:14:05.962 [Information] index:0 count:20
2020-11-23T12:14:11.318 [Information] Count:10
2020-11-23T12:14:11.319 [Information] Executed 'GetForumTopics' (Succeeded, Duration=6220ms)
Приведенный выше журнал приводит к коду 500 и отсутствию данных (тело ответа пустое).
Есть идеи, что я делаю не так?
Комментарии:
1. Когда вы говорите «нет данных» , вы имеете в виду, что нет тела ответа с ошибкой 500 или что вы не получаете ожидаемые данные? Я бы обязательно проверил, есть ли какое-либо тело ответа, поскольку это может дать вам подсказки относительно того, что не так.
2. При отсутствии данных я имею в виду, что тело ответа пустое.
Ответ №1:
оказалось, что это связано с циклической зависимостью в моей модели EF. Удивительно, что это сработало в моих модульных тестах, но не удалось выполнить сериализацию JSON