在J2EE应用程序(例如在WebSphere中运行的应用程序)中,当我使用System.out.println()时,我的文本将转换为标准输出,由WebSphere管理控制台映射到一个文件。

在ASP中。NET应用程序(像一个运行在IIS), Console.WriteLine()的输出去哪里?IIS进程必须有一个stdin, stdout和stderr;但是stdout映射到/dev/null的Windows版本还是我在这里错过了一个关键的概念?

我不是问我是否应该在那里记录日志(我使用log4net),而是问输出到哪里?我最好的信息来自于这个讨论,他们说Console. setout()可以改变TextWriter,但它仍然没有回答控制台的初始值是什么,或者如何在配置/运行时代码之外设置它的问题。


当前回答

如果您正在使用IIS Express并通过命令提示符启动它,它将打开DOS窗口,您将看到Console。在那里写语句。

例如,打开一个命令窗口,输入:

"C:\Program Files (x86)\IIS Express\iisexpress" /path:C:\Projects\Website1 /port:1655

这假设你有一个网站目录在C:\Projects\Website1。它将启动IIS Express并为您的网站目录中的页面提供服务。它将打开命令窗口,您将在那里看到输出信息。假设这里有一个默认文件。Aspx,代码如下:

<%@ Page Language="C#" %>
<html>
<body>
    <form id="form1" runat="server">
    Hello!

    <% for(int i = 0; i < 6; i++) %>
       <% { Console.WriteLine(i.ToString()); }%>

    </form>
</body>
</html>

安排浏览器和命令窗口,以便在屏幕上看到它们。现在在浏览器中输入:http://localhost:1655/。您将看到Hello!在网页上,但在命令窗口中,您将看到类似的内容

Request started: "GET" http://localhost:1655/
0
1
2
3
4
5
Request ended: http://localhost:1655/default.aspx with HTTP status 200.0

我将代码放在标记中的代码块中,使其变得简单,但是代码背后或代码中的任何其他地方的任何控制台语句都将在这里显示。

其他回答

System.Diagnostics.Debug.WriteLine(…);把它放到Visual Studio 2008的即时窗口中。

进入菜单Debug -> Windows -> Immediate:

如果你使用System.Diagnostics.Debug.WriteLine(…)而不是Console.WriteLine(),那么你可以在Visual Studio的输出窗口中看到结果。

在ASP中。NET应用程序,我认为它会转到输出或控制台窗口,在调试期间是可见的。

如果您正在使用IIS Express并通过命令提示符启动它,它将打开DOS窗口,您将看到Console。在那里写语句。

例如,打开一个命令窗口,输入:

"C:\Program Files (x86)\IIS Express\iisexpress" /path:C:\Projects\Website1 /port:1655

这假设你有一个网站目录在C:\Projects\Website1。它将启动IIS Express并为您的网站目录中的页面提供服务。它将打开命令窗口,您将在那里看到输出信息。假设这里有一个默认文件。Aspx,代码如下:

<%@ Page Language="C#" %>
<html>
<body>
    <form id="form1" runat="server">
    Hello!

    <% for(int i = 0; i < 6; i++) %>
       <% { Console.WriteLine(i.ToString()); }%>

    </form>
</body>
</html>

安排浏览器和命令窗口,以便在屏幕上看到它们。现在在浏览器中输入:http://localhost:1655/。您将看到Hello!在网页上,但在命令窗口中,您将看到类似的内容

Request started: "GET" http://localhost:1655/
0
1
2
3
4
5
Request ended: http://localhost:1655/default.aspx with HTTP status 200.0

我将代码放在标记中的代码块中,使其变得简单,但是代码背后或代码中的任何其他地方的任何控制台语句都将在这里显示。

除非你在一个严格的控制台应用程序中,否则我不会使用它,因为你无法真正看到它。我将使用Trace.WriteLine()用于调试类型的信息,这些信息可以在生产环境中打开和关闭。