在IIS中部署我的asp.net Web应用程序后,是否有可能看到Console.WriteLine命令的输出? (不再是Visual Studio)
我查了这个问题:
Where does Console.WriteLine go in ASP.NET?
但问题是他们都在讨论调试/开发环境,可以使用Visual Studio的输出窗口来检查这些行的输出。
有没有办法在不安装额外的日志记录工具(例如log4net)的情况下查看这些行的输出?
答案 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.Write
或Debug.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,它有很多帮助 无论你想要观察什么放入消息框