Триггер http функции Azure выдает внутреннюю ошибку сервера 500

У меня есть триггер http с выходной привязкой CosmosDB (sql api), который выдает внутреннюю ошибку сервера 500, когда я выполняю вызов POST для развернутой версии.

 public static class Function1
{
    [FunctionName("Function1")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] Request req,

  ILogger log, [CosmosDB(
            databaseName: "haveThatDB",
            collectionName: "Requests",
            ConnectionStringSetting = "CosmosDBConnection",CreateIfNotExists =true)] IAsyncCollector<Request> requestOutput
       )
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
        await requestOutput.AddAsync(req);



        return req != null
            ? (ActionResult)new OkObjectResult($"Hello, {req.ItemRequested}")
            : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
    }
}

тот же код отлично работает локально.

в KUDU и на портале не создаются журналы для неудавшихся запросов. если я удалю привязку cosmosDB, она будет работать локально (я вижу, что документ создается) и в развернутом URL-адресе, а также создаются журналы успеха.

Однако однажды я смог увидеть сообщение об ошибке вроде «Ошибка при синтаксическом анализе логического значения. Путь», строка 1, позиция 1. » но после этого я никогда не видел эту проблему в журналах. потому что нет логов в случае 500 внутренней ошибки сервера. активация аналитики приложения также не показывает никаких неудачных попыток выполнить 500 обращений.

введите описание изображения здесь


person Raas Masood    schedule 16.10.2018    source источник
comment
Вы пробовали отлаживать приложение-функцию. В Azure есть этот тестовый модуль, который позволяет помещать тело запроса. Затем вы можете использовать журналы консоли, чтобы найти проблему.   -  person Simon Bourdeau    schedule 16.10.2018
comment
Можете дать ссылку с информацией на этот тестовый модуль?   -  person Raas Masood    schedule 16.10.2018
comment
Вот документ: docs.microsoft.com/en-us/azure/azure-functions/   -  person Simon Bourdeau    schedule 16.10.2018
comment
консольные журналы не генерируются в случае 500 внутренней ошибки сервера   -  person Raas Masood    schedule 16.10.2018
comment
Пожалуйста, откройте проблему и укажите свои данные здесь github.com/Azure/azure-functions -host / issues / new Мы рассмотрим.   -  person Ling Toh    schedule 17.10.2018


Ответы (2)


Без дополнительной информации я предполагаю, что вы можете забыть добавить CosmosDBConnection в настройках приложения на портале, потому что ваш код работает на моей стороне как локально, так и в Интернете. Настройки в local.settings.json не вставляются в портал, так как они используются для локального разработчика.

person Jerry Liu    schedule 17.10.2018
comment
Оно работает. Я добавил строку подключения на портале. Потратил 3 дня, пытаясь понять это. Большое вам спасибо. Мне было трудно, потому что журналы не создавались. В то время как, если мы пропускаем строку подключения локально, мы получаем подсказку, что она не может разрешить строку подключения. - person Raas Masood; 17.10.2018
comment
В куду также не создавались логи. Я также упомянул об этом в оригинальном посте. - person Raas Masood; 17.10.2018
comment
@RaasMasood Извините, я пропустил ключевую информацию. Вы можете повторно открыть проблему на github, если хотите найти первопричину. - person Jerry Liu; 17.10.2018
comment
Разберитесь и в этой проблеме - удаленные настройки отсутствовали, которые были локально, а журналы вообще не были полезны - person CodeAlchemist; 01.11.2019

Я пытался реализовать учебник в MS Learning для функции добавления закладок и обнаружил, что всякий раз, когда я добавляю привязку вывода CosmosDB, она не обрабатывается и генерирует ту же внутреннюю ошибку 500. Даже он не работает, если идентификатор, указанный во входном параметре при тестировании, не найден в CosmosDB.

Панель «Код + тест» на портале Azure также показывает журналы ниже, которые не дают никаких сведений о том, что не так с запросом.

2020-08-05T06:05:43Z   [Information]   Executing 'Functions.add-bookmark' (Reason='This function was programmatically called via the host APIs.', Id=b6b6617d-c1d6-4729-91c9-c0d5f18ddc1b)
2020-08-05T06:05:43Z   [Verbose]   Sending invocation id:b6b6617d-c1d6-4729-91c9-c0d5f18ddc1b
2020-08-05T06:05:43Z   [Verbose]   Posting invocation id:b6b6617d-c1d6-4729-91c9-c0d5f18ddc1b on workerId:70d0b104-cdf6-4ad9-b2ac-d7e079b80544
2020-08-05T06:05:43Z   [Error]   Executed 'Functions.add-bookmark' (Failed, Id=b6b6617d-c1d6-4729-91c9-c0d5f18ddc1b, Duration=102ms)

Поскольку у меня была та же учетная запись CosmosDB, что и для привязки ввода, я был уверен, что проблема не в подключении CosmosDB.

Затем я изменил несколько параметров среды выполнения. Поиграв с парочкой из них, как только я изменил версию RunTime на ~ 2, она начала работать нормально.

Я все еще не уверен, почему Runtime 3.0 не работает. Уже есть ОШИБКА https://github.com/Azure/Azure-Functions/issues/1670 открыть с командой Azure Functions на Github.

person Avinash Barnwal    schedule 05.08.2020