【问题标题】:Where does console output go in an IIS hosted app?控制台输出在 IIS 托管应用程序中的位置?
【发布时间】:2012-01-25 20:25:19
【问题描述】:

假设我有一个托管在 IIS 中的 WCF 应用程序。在那个应用程序中,我运行这行代码:

 Console.WriteLine("Testing, testing 1 2 3");

那会写到哪里?还是被忽略了,然后就丢失了?

有什么方法可以在需要时捕获它吗?

【问题讨论】:

  • 如果它托管在 IIS 中,那么它与 ASP.NET 相同,所以这篇文章应该为您解答 stackoverflow.com/questions/137660/… - 我建议您改用 System.Diagnostics.Debug.WriteLine,您可以选择去哪里。

标签: wcf iis console console-application


【解决方案1】:

无处可去。更具体地说:

NullStream,定义为“没有后备存储的流”。 所有的方法什么都不做或什么也不返回。这是一个内部类 到Stream。以下代码取自微软的源代码。

基本上,当Console write 方法之一被调用时 时间,调用 Windows API 函数GetStdHandle “标准输出”。如果没有返回句柄,则创建 NullStream 并使用。

引用自这里:https://stackoverflow.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”
猜你喜欢
  • 2012-10-21
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 2014-07-01
  • 2013-05-07
  • 1970-01-01
  • 2012-07-02
  • 1970-01-01
相关资源
最近更新 更多