我需要从网站上的代码中输出一些调试信息。
我如何OutputDebugString
从 ASP.net 网站调用,并让运行 DbgView 的用户看到它?
我需要从网站上的代码中输出一些调试信息。
我如何OutputDebugString
从 ASP.net 网站调用,并让运行 DbgView 的用户看到它?
好的,这是一个完整的例子。它是一个控制台,但原理和代码大致相同。我今天无法在我的机器上测试从 OutputDebugString 捕获,因为我没有管理员权限。在服务器上,您将写入 TextWriterTraceListener 而不是控制台。如果您无法使用 pinvoke 从 OutputDebugString 写入和读取,可能是客户没有权限或应用程序没有必要的权限。
还!如果 Debug.WriteLine 没有出现,可能网站是在 RELEASE 模式下编译的,而 DEBUG 没有定义。TRACE 默认是为 RELEASE 和 DEBUG 定义的。TraceSource 会写入 OutputDebugString ,除非您已清除默认侦听器,许多人出于习惯这样做,因为根据我的经验,OutputDebugString 可能会减慢速度,尤其是如果您目前实际上没有查看输出。
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace TraceToOutputDebugString
{
class Program
{
[DllImport("kernel32.dll")]
static extern void OutputDebugString(string lpOutputString);
static void Main(string[] args)
{
//Put these lines in your asp.net Page
OutputDebugString("Hello from Pinvoke OutputDebugString");
TraceSource trace = new TraceSource("app");
trace.TraceInformation("Hello from TraceSource");
Trace.TraceInformation("Hello from 1.1 Trace.TraceInformation");
Debug.WriteLine("Hello Debug.WriteLine");
System.Console.ReadKey();
}
}
}
这是配置。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<sources>
<source name="app" switchName="app">
<listeners>
<add name="Console" type="System.Diagnostics.ConsoleTraceListener"/>
</listeners>
</source>
</sources>
<switches>
<add name="app" value="Information"/>
</switches>
<trace>
<listeners>
<add name="Console" type="System.Diagnostics.ConsoleTraceListener"/>
</listeners>
</trace>
</system.diagnostics>
</configuration>