如果您从命令行运行 IIS Express,则您在 Web 应用程序中编写的任何内容 Console.Out 都会显示在命令行输出中。如果您将DataContext.Log = Console.Out
. 但是,如果您在 VS 2010 SP1 的 Web 项目属性中选中“使用 IIS Express”,您将永远看不到命令行。
您可以将 IIS Express Console.Out 重定向到日志文件或其他内容吗?
如果您从命令行运行 IIS Express,则您在 Web 应用程序中编写的任何内容 Console.Out 都会显示在命令行输出中。如果您将DataContext.Log = Console.Out
. 但是,如果您在 VS 2010 SP1 的 Web 项目属性中选中“使用 IIS Express”,您将永远看不到命令行。
您可以将 IIS Express Console.Out 重定向到日志文件或其他内容吗?
我通过 damieng 的博客找到了一种直接写入 Debug Console 窗口的方法:
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; }
}
}
您可以像使用 Console.Out 一样将其附加到 DataContext:
#if DEBUG
db.Log = new DebugTextWriter();
#endif
http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
如果您为 iisexpress.exe 设置“图像文件执行选项”,您可以看到控制台输出。唯一的问题是,当新的 iisexpress.exe 启动时,您将看到一个弹出控制台窗口。仅当您想查看控制台跟踪时才可以设置它。
执行以下设置图像文件执行选项:
从http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx安装 windbg
设置以下注册表项(此链接可以帮助您http://msdn.microsoft.com/en-us/library/a329t4ed(VS.71).aspx)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image 文件执行选项\iisexpress.exe]
"调试器"="c:\\windbg -g -G"
您可以通过重命名或删除上述注册表项来禁用图像文件执行选项。