Почему после публикации функции Azure возникает внутренняя ошибка сервера? - PullRequest
1 голос
/ 27 апреля 2020

Я создал API в Azure функциях, использующих базу данных Azure Sql. У меня есть этот маршрут:

    [FunctionName("GetAllClassesForTeacher")]
    public IActionResult GetAllClassesForTeacher(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequestMessage req,
     ILogger log)
    {
        var headers = req.Headers;
        if (headers.TryGetValues("TeacherId", out var Teacher))
        {
            int TeacherId = Convert.ToInt32(Teacher.First());

            var result = _classDistributionServices.GetAllClassesForTeacher(TeacherId);

            if (result != null)
            {
                return new OkObjectResult(result);
            }
            return new NotFoundResult();
        }
        return new NotFoundResult();
    }

При локальном тестировании он работает каждый раз. Но после публикации на портале Azure я получаю от почтальона:

{
"statusCode": 500,
"message": "Internal server error",
"activityId": "f98c4112-0c31-4841-99a5-c79dffa41d86"

То, что я пытался / делал до сих пор:

  • , чтобы взять IP у Azure Функционируйте и регистрируйте его в брандмауэрах и виртуальных сетях с сервера Azure Sql.
  • Я убедился, что ConnectionString из local.settings. json загружен на портал.
  • Я объявил этот маршрут в управлении API.

Но ошибка все еще сохраняется. У меня такое ощущение, что все еще из-за брандмауэра базы данных, даже если я зарегистрировал правильный IP-адрес?

Не могли бы вы мне помочь?

1 Ответ

0 голосов
/ 28 апреля 2020

Есть несколько способов выяснить, в чем проблема:

1-Включить Application Insights и использовать Живые метрики для фиксации ошибки

2-Использовать Kudu и проверить наличие более подробную информацию об ошибке (например, https://myfunctionapp.scm.azurewebsites.net/azurejobs/# / functions )

3-Вы также можете заключить код в код "try / catch" и бросить детали исключения в выводе ответа.

...