Console.WriteLine在ASP.net生产环境中的位置是什么?

时间:2012-09-22 14:11:06

标签: c# asp.net console trace console.writeline

在IIS中部署我的asp.net Web应用程序后,是否有可能看到Console.WriteLine命令的输出? (不再是Visual Studio)

我查了这个问题:

Where does Console.WriteLine go in ASP.NET?

但问题是他们都在讨论调试/开发环境,可以使用Visual Studio的输出窗口来检查这些行的输出。

有没有办法在不安装额外的日志记录工具(例如log4net)的情况下查看这些行的输出?

6 个答案:

答案 0 :(得分:11)

Console.WriteLine(默认情况下重定向到Console.Out.WrlteLine)写入Stream.Null,这意味着根据您提到的question,写入它们的内容将丢失。

要将Console.Out重定向到另一个流(例如文件),请使用Console.SetOut,例如global.asax文件BeginRequest handler。这会将任何Console.WriteLine调用重定向到输出文件。请记住在EndRequest处理程序或类似位置关闭流。

正如其他人所说,出于这个原因,通常应该避免在Web应用程序或通用库中使用Console.WriteLine。请考虑使用日志库,例如log4net

答案 1 :(得分:3)

默认情况下,

Console.Out对应于主机进程的stdout流。在Windows上,只有标记为Console类型的可执行文件将其stdout流定向到控制台窗口 - 对于所有其他可执行类型(GUI和服务进程),stdout无处可去。

ASP.NET在w3wp.exe内运行,这是一个没有GUI的服务进程。正如@akton指出它会转到空流,所以写的任何内容都将丢失。

如果要跟踪调试操作(或者更确切地说,事后调试),请使用Debug.WriteLine或使用log4net等日志库。

答案 2 :(得分:1)

我认为你不能。负责任的开发人员可以从他的代码中编写信息以帮助调试,但总是Trace.WriteDebug.Write,永远不会Console.Write

答案 3 :(得分:1)

接受的答案是正确的。但是如果你想用你的鞋子将钉子钉入咖啡桌(错误的目标和错误的工具),那么你需要停止iis,并通过远程桌面登录服务器并从控制台以交互方式运行它inetinfo.exe与cmd.exe提示符中的适当开关。这是一个MSDN页面,它说明了旧版本IIS的技术:http://msdn.microsoft.com/en-us/library/aa291261(v=vs.71).aspx我认为它仍然适用于较新版本的IIS。

如果您不想使用库,则可以始终使用System.Diagnostics TraceSource,然后将跟踪重定向到开发中的ConsoleTraceListeners(don't forget to attach a console),然后重定向到服务器环境中的文件或数据库侦听器。

答案 4 :(得分:1)

您可以从那里使用DebugView获取在IIS上运行的C#/ .Net编译应用程序的Console.WriteLine()输出:https://technet.microsoft.com/en-us/sysinternals/bb896647

答案 5 :(得分:0)

使用MessageBox,它有很多帮助 无论你想要观察什么放入消息框