控制台输出在 IIS 托管应用程序中的位置?
Posted
技术标签:
【中文标题】控制台输出在 IIS 托管应用程序中的位置?【英文标题】:Where does console output go in an IIS hosted app? 【发布时间】:2012-01-25 20:25:19 【问题描述】:假设我有一个托管在 IIS 中的 WCF 应用程序。在那个应用程序中,我运行这行代码:
Console.WriteLine("Testing, testing 1 2 3");
那会写到哪里?还是被忽略了,然后就丢失了?
有什么方法可以在需要时捕获它吗?
【问题讨论】:
如果它托管在 IIS 中,那么它与 ASP.NET 相同,所以这篇文章应该为您解答 ***.com/questions/137660/… - 我建议您改用 System.Diagnostics.Debug.WriteLine,您可以选择去哪里。 【参考方案1】:无处可去。更具体地说:
NullStream
,定义为“没有后备存储的流”。 所有的方法什么都不做或什么也不返回。这是一个内部类 到Stream
。以下代码取自微软的源代码。基本上,当
Console
write 方法之一被调用时 时间,调用 Windows API 函数GetStdHandle
“标准输出”。如果没有返回句柄,则创建NullStream
并使用。
引用自这里:https://***.com/a/2075892/12744
实际上,同样的答案也可以解决您问题的第二部分:
要实际重定向控制台输出,无论项目类型如何,请使用
Console.SetOut(New System.IO.StreamWriter("C:\ConsoleOutput.txt")),
【讨论】:
这个答案的第二部分是一个 gem - 它回答“我如何在 IIS Web 应用程序中查看控制台输出”。注意:我发现我必须添加“Console.Out.Flush();”在每次调用 Console.WrriteLine... 之后,只要调用 WriteLine,就可以将输出显示在文件中。 只是缺少那部分:“writer.AutoFlush = True”以上是关于控制台输出在 IIS 托管应用程序中的位置?的主要内容,如果未能解决你的问题,请参考以下文章
当我在 IIS7 中托管应用程序时,未加载 CSS 和 Javascript
C# 加载非托管 DLL:IIS 上的控制台应用程序和 webapp 之间的巨大性能差异