Web サイトのコードからデバッグ情報を出力する必要があります。
OutputDebugString
ASP.net Web サイトから呼び出して、 DbgView を実行しているユーザーに表示するにはどうすればよいですか?
注: Web サイトはサポートしていませんSystem.Diagnostics.Trace.TraceWarning(...)
。
Web サイトのコードからデバッグ情報を出力する必要があります。
OutputDebugString
ASP.net Web サイトから呼び出して、 DbgView を実行しているユーザーに表示するにはどうすればよいですか?
注: Web サイトはサポートしていませんSystem.Diagnostics.Trace.TraceWarning(...)
。
さて、ここに完全な例があります。これはコンソールですが、原則とコードはほとんど同じです。管理者権限がないため、今日、自分のマシンで OutputDebugString からのキャプチャをテストできませんでした。サーバーでは、コンソールの代わりに TextWriterTraceListener に書き込みます。pinvoke を使用して OutputDebugString の書き込みと読み取りができない場合は、お客様に権限がないか、アプリに必要な権限がない可能性があります。
また!Debug.WriteLine が表示されない場合は、Web サイトが 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>