У меня есть функция Azure со следующей строкой кода:
Console.WriteLine("Name: " + list.Count());
Эта строка иногда вызывает это исключение:
Ручка недействительна.
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e)
в Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor+d__26.MoveNext (Microsoft.Azure.WebJobs.Host, версия = 3.0.34.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35: C:\projects\azure-webjobs-sdk- rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:352)
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e) в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e) в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult (System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e) в Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor+d__18.MoveNext (Microsoft.Azure.WebJobs.Host, версия = 3.0.34.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35: C:\projects\azure-webjobs-sdk- rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:108) Внутреннее исключение System.IO.IOException обрабатывается в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw: в System.ConsolePal+WindowsConsoleStream.Write (System.Console, версия = 4.1.2.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a) в System.IO.StreamWriter.Flush (System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e) в System.IO.StreamWriter.WriteLine (System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e) в System.IO.TextWriter+SyncTextWriter.WriteLine (System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e) в System.Console.WriteLine (System.Console, версия = 4.1.2.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a)
Должны ли мы игнорировать это или не использовать консольный класс в функции Azure?





Это происходит, когда окно консоли было закрыто или если вывод консоли был перенаправлен в файл или другой поток.
В лазурных функциях не следует использовать Console.WriteLine. вместо этого вы должны использовать ILogger для записи журналов. вы можете вести такие журналы, как log.LogInformation("Name: " + list.Count());, это будет записывать выходные данные в журнал среды выполнения функций Azure. вы также можете просматривать журналы на портале Azure.
Обновлено: как предложил @Fildor в комментарии, вы можете использовать log.LogInformation("Name: {count}", list.Count());
@Fildor спасибо за ваш комментарий, но у меня очень ограниченные знания лазурного языка, пожалуйста, добавьте больше деталей в комментарий или добавьте в качестве своего ответа
Ничего большого. Просто предпочитаю log.LogInformation("Name: {count}", list.Count());
@ Филдор, спасибо, понял. я изменю свой ответ
Этот. Однако я бы порекомендовал семантическое ведение журнала.