У меня есть два Azure WebJobs. Первый принимает входящее сообщение, которое сообщает ему, чтобы он захватил PDF-файл и разбил его на отдельные изображения страниц, а затем отправил очередное сообщение для второго WebJob для обработки отдельных страниц. Он отлично работал на нашем экземпляре QC, но когда мы попытались перейти к производству, я начал получать странные ошибки во второй работе, но не последовательно. Первое задание выполняется и разбивает файл на изображения страниц. Это прекрасно работает. Я подтвердил, что каждый образ страницы создается и каждое сообщение в очереди попадает в очередь. Однако для второго задания обрабатываются только некоторые из сообщений. Оставшийся показать это ошибка в диагностике WebJob:Ошибка подключения к Azure WebJob DB Только в некоторых случаях
Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Exception while executing function: Functions.ProcessBatchPage ---> System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 52 - Unable to locate a Local Database Runtime installation. Verify that SQL Server Express is properly installed and that the Local Database Runtime feature is enabled.) ---> System.ComponentModel.Win32Exception: The system cannot find the file specified
Но что странно, что эта ошибка упоминает локальной базы данных Время воспроизведения и SQL Server Express, и я не ссылки либо где-нибудь в моем коде. Система указывает на базу данных Azure SQL. Задание - это ADO.Net, и я жестко закодировал строку подключения, чтобы попытаться устранить любые проблемы с строками подключения на основе конфигурации. Но странно, что это происходит только с определенной частью сообщений. Остальные работают отлично.
Наконец, я запустил задание в локальном отладке (все еще указывая на настоящую очередь и базу данных на Azure) и получил ту же проблему. Но задание выводит консольную строку с идентификатором задания в качестве первой строки кода. Для тех рабочих мест, которые успешно работают, я вижу эту статью. Для тех, кто терпит неудачу, я никогда ничего не вижу. Это похоже на то, что работа на самом деле не начинается правильно. (Неудачные работы также имеет очень короткое время работы 50-100ms)
Вы можете разместить app.config, который развертывается в Azure? Если вы используете EF, можете ли вы указать, как вы устанавливаете строку соединения? – lopezbertoni
Не использовать EF вообще. У меня были проблемы с EF в webjob, поэтому я переписал только с прямым ADO.net. Он имеет инструкцию SQLConnection с жестко привязанной строкой. Раньше у меня была CS в app.config, но она была жестко закодирована в webjob functions.cs, чтобы попытаться устранить эту проблему. –