У меня есть два веб-задания Azure. Первый принимает входящее сообщение, в котором говорится, что необходимо получить PDF-файл и разбить его на отдельные изображения страниц, а затем поставить другое сообщение в очередь для второго веб-задания для обработки отдельных страниц. Он отлично работал на нашем экземпляре QC, но когда мы попытались перейти к производству, я начал получать странные ошибки на втором задании, но не постоянно. Первое задание запускается и разбивает файл на изображения страниц. Это работает нормально. Я подтвердил, что каждое изображение страницы создается и каждое сообщение страницы ставится в очередь. Однако для второго задания правильно обрабатываются только некоторые сообщения. Остальные показывают эту ошибку в диагностике WebJob:
Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Исключение при выполнении функции: Functions.ProcessBatchPage ---> System.Data.SqlClient.SqlException: Произошла ошибка, связанная с сетью или экземпляром при установлении соединения с SQL Server. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен на разрешение удаленных подключений. (поставщик: Сетевые интерфейсы SQL, ошибка: 52 — Не удается найти установку среды выполнения локальной базы данных. Убедитесь, что SQL Server Express установлен правильно и включена функция среды выполнения локальной базы данных.) ---> System.ComponentModel.Win32Exception: The система не может найти указанный файл
Но что странно, так это то, что в этой ошибке упоминается среда выполнения локальной базы данных и SQL Server Express, и я нигде в своем коде не упоминаюсь. Система указывает на базу данных SQL Azure. Это работа ADO.Net, и я жестко закодировал строку подключения, чтобы попытаться устранить любые проблемы со строками подключения на основе конфигурации. Но что странно, это происходит только с определенной частью сообщений. Остальные обрабатывают отлично.
Наконец, я выполнил задание в режиме отладки локально (все еще указывая на настоящую очередь и БД в Azure) и столкнулся с той же проблемой. Но задание выводит строку консоли с идентификатором задания в качестве первой строки кода. Для тех заданий, которые обрабатываются успешно, я вижу эту строку записи. Для тех, кто терпит неудачу, я никогда ничего не вижу. Это похоже на то, что работа на самом деле не запускается правильно. (неудачные задания также имеют очень короткое время выполнения 50-100 мс)