Kev*_*son 301 asp.net iis console.writeline
在J2EE应用程序(如在WebSphere中运行的应用程序)中,当我使用时System.out.println(),我的文本转到标准输出,由WebSphere管理控制台映射到文件.
在ASP.NET应用程序(如在IIS中运行的应用程序)中,Console.WriteLine()go 的输出在哪里?IIS进程必须有stdin,stdout和stderr; 但是stdout映射到Windows版本的/ dev/null还是我错过了一个关键概念?
我不是在问我是否应该登录(我使用log4net),但是输出在哪里?我最好的信息来自这个他们说可以改变的讨论,但它仍然没有回答关于控制台的初始值是什么,或者如何在config /在运行时代码之外设置它的问题.Console.SetOut()TextWriter
Gre*_*rdt 707
如果使用System.Diagnostics.Debug.WriteLine(...)而不是Console.WriteLine(),则可以在Visual Studio 的" 输出"窗口中查看结果.
Rub*_*ben 192
如果你看一下.NET Reflector中的Console类,你会发现如果一个进程没有一个关联的控制台,并且由(包含在a中)支持,这是一个基本上忽略所有输入的虚拟实现,并且没有输出.Console.OutConsole.ErrorStream.NullTextWriterStream
因此它在概念上等同于/dev/null,但实现更加简化:使用null设备不会发生实际的I/O.
此外,除了呼叫之外SetOut,无法配置默认值.
Art*_*lho 25
我通过尝试将DataContext的Log输出更改为输出窗口来找到此问题.所以对于其他试图做同样事情的人来说,我所做的就是创造这个:
class DebugTextWriter : System.IO.TextWriter {
public override void Write(char[] buffer, int index, int count) {
System.Diagnostics.Debug.Write(new String(buffer, index, count));
}
public override void Write(string value) {
System.Diagnostics.Debug.Write(value);
}
public override Encoding Encoding {
get { return System.Text.Encoding.Default; }
}
}
Run Code Online (Sandbox Code Playgroud)
在那之后:dc.Log = new DebugTextWriter(),我可以看到输出窗口中的所有查询(dc是DataContext).
有关详细信息,请查看此内容:http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
小智 17
如果您使用的是IIS Express并通过命令提示符启动它,它将使DOS窗口保持打开状态,您将Console.Write在那里看到语句.
例如,打开命令窗口并输入:
"C:\Program Files (x86)\IIS Express\iisexpress" /path:C:\Projects\Website1 /port:1655
Run Code Online (Sandbox Code Playgroud)
假设您在C:\ Projects\Website1上有一个网站目录.它将启动IIS Express并提供您网站目录中的页面.它将使命令窗口保持打开状态,您将在那里看到输出信息.假设你有一个文件default.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>
Run Code Online (Sandbox Code Playgroud)
安排浏览器和命令窗口,以便在屏幕上看到它们.现在输入您的浏览器:http://localhost:1655/.你会看到你好!在网页上,但在命令窗口中你会看到类似的东西
Request started: "GET" http://localhost:1655/
0
1
2
3
4
5
Request ended: http://localhost:1655/default.aspx with HTTP status 200.0
Run Code Online (Sandbox Code Playgroud)
我通过将代码放在标记的代码块中来简化,但代码隐藏或代码中其他任何地方的任何控制台语句也会在此处显示.
System.Diagnostics.Debug.WriteLine(...);将它放入Visual Studio 2008中的立即窗口.
转到菜单Debug - > Windows - > Immediate:

尝试附加某种“后端调试器”,以将您的消息或数据记录到控制台或输出窗口,就像我们在节点控制台中所做的那样。
System.Diagnostics.Debug.WriteLine("Message" + variable)代替Console.WriteLine()
这样您就可以在 Visual Studio 的输出窗口(又称为控制台)中看到结果。
| 归档时间: |
|
| 查看次数: |
231118 次 |
| 最近记录: |