控制台输出在 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 之间的巨大性能差异

IIS异步控制器操作中的互斥锁实现?

使用移动设备访问托管在 Windows 服务中的 WCF 服务

转换 Web API 以使用自托管

NET Core 3.1 工作人员服务在 IIS 中