Строка подключения иногда недоступна в ServiceBusTrigger - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть функция Azure с триггером служебной шины:

public static async Task Run([ServiceBusTrigger(
    "%inputTopicName%",
    "%subscriptionName%",
    AccessRights.Manage,
    Connection = "connection")]string mySbMsg)

В 99,9% вызовов триггер успешно преобразуется в подписку на служебной шине Azure.Но иногда я вижу следующую ошибку в моем журнале:

Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Exception while executing function: UptimeChecker ---> System.ArgumentException: The argument connectionString is null or white space.
Parameter name: connectionString
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.FunctionInvocationFilterInvoker.d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__24.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__23.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__22.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__16.MoveNext()
   --- End of inner exception stack trace ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__16.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__13.MoveNext()

Кажется, что триггер служебной шины не может разрешить переменную connection из настроек.

Я пытался добавить отладкупримените фильтр к моей функции, чтобы выяснить, что происходит:

public class DebuggingFilter : FunctionInvocationFilterAttribute
{
    public override Task OnExecutingAsync(FunctionExecutingContext executingContext, CancellationToken cancellationToken)
    {
        executingContext.Properties.Add("connection", ConfigurationManager.AppSettings["connection"]);
        executingContext.Properties.Add("inputTopicName", ConfigurationManager.AppSettings["inputTopicName"]);
        executingContext.Properties.Add("subscriptionName", ConfigurationManager.AppSettings["subscriptionName"]);
        return base.OnExecutingAsync(executingContext, cancellationToken);
    }
}

Когда в моей функции регистрируется ошибка, свойства, добавленные к FunctionExecutionContext, автоматически добавляются в сообщение журнала.Странная вещь в том, что в сценарии, когда функции Azure выдают это исключение, значения свойств разрешаются и отображаются в сообщении журнала.

Что может быть причиной этого?У меня возникли многочисленные проблемы с разрешением параметров из функций Azure, поэтому, возможно, это общая проблема?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

У меня нет окончательного ответа на этот вопрос, но я хочу поделиться некоторыми деталями с другими людьми, испытывающими ту же проблему.Кажется, проблема связана только с функциями потребления v1.После обновления моей функции до Azure Functions v2 и использования новой системы конфигурации, доступной там, я больше не испытываю описанную выше проблему.Поскольку v1 больше не является текущей версией, я не хочу тратить больше времени на отладку, когда кажется, что v2 работает.

0 голосов
/ 15 февраля 2019

В соответствии с этим: вы должны использовать последнюю версию 2.3.0 для nuget Microsoft.Azure.WebJobs.ServiceBus -Version 2.3.0

Я бы также проверил, если это проблема при запуске в потреблениипланируйте путем жесткого кодирования соединения, чтобы увидеть, является ли это проблемой при чтении конфигурации соединения.А в противном случае проверьте это в плане обслуживания приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...