控制台.WriteLine有时会抛出句柄无效异常



我有一个Azure函数,它有这行代码:

Console.WriteLine("Name: " + list.Count());

这行有时会抛出这样的异常:

句柄无效。

at system . runtime . exceptionservices . exceptiondispatchino . throw (System.Private。CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor+d__26。MoveNext (Microsoft.Azure.WebJobs。主机,版本=3.0.34.0,文化=中性,PublicKeyToken=31bf3856ad364e35: C:projectsazure-webjobs-sdk-rqm4tsrcMicrosoft.Azure.WebJobs.HostExecutors functionexecutors .cs:352)
at system . runtime . exceptionservices . exceptiondispatchino . throw (System.Private. private . error)。CoreLib,版本=4.0.0.0,文化=中性,PublicKeyToken=7cec85d7bea7798e)在system_private . private . task_wait . throwfornonsuccess ()CoreLib,版本=4.0.0.0,文化=中性,PublicKeyToken=7cec85d7bea7798e)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。主机,版本=3.0.34.0,文化=中性,PublicKeyToken=31bf3856ad364e35: C:projectsazure-webjobs-sdk-rqm4tsrcMicrosoft.Azure.WebJobs.HostExecutors functionexecutors .cs:108)System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw处理的内部异常System.IO.IOException:在System.ConsolePal + WindowsConsoleStream。写(系统。控制台,版本=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控制台,版本=4.1.2.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a)

我们应该忽略这个还是不使用Azure函数中的控制台类?

当控制台窗口被关闭,或者控制台输出被重定向到文件或其他流时,会发生这种情况。

在azure函数中,不应该使用Console.WriteLine。相反,您应该使用ILogger来编写日志。你可以写像log.LogInformation("Name: " + list.Count());这样的日志,这将把输出写到Azure Functions运行时日志。您还可以在azure门户中查看日志。

编辑:正如@Fildor在评论中建议的那样,您可以使用log.LogInformation("Name: {count}", list.Count());

相关内容

  • 没有找到相关文章

最新更新