Как включить трассировку сети в. NET на моно? - PullRequest
0 голосов
/ 15 февраля 2020

Я пытаюсь зарегистрировать все исходящие HTTP-запросы и ответы, которые делает приложение. NET. Я следую этой статье из документации Microsoft: https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-configure-network-tracing

Я предоставляю краткий пример моего кода и app.config. Следующее работает должным образом и создает файл network.log, который включает полное тело запроса и ответа. Однако это работает только на Windows и. NET Framework. Выполнение того же кода на Linux с использованием моно версии 5.18.1.0 - mono Program.exe не создает файл network.log и не вызывает никаких исключений.

C# Код:

using System;
using System.IO;
using System.Net;

namespace TraceTest
{
    class Program
    {
        static void Main(string[] args)
        {
            WebRequest request = HttpWebRequest.Create("http://example.com");
            using (WebResponse response = request.GetResponse())
            using (Stream responseStream = response.GetResponseStream())
            using (StreamReader streamReader = new StreamReader(responseStream))
            {
                Console.WriteLine("Received: " + streamReader.ReadToEnd());
            }
        }
    }
}

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
    <system.diagnostics>
        <sources>
            <source name="System.Net" tracemode="includehex" maxdatasize="1024">
                <listeners>
                    <add name="System.Net"/>
                </listeners>
            </source>
        </sources>
        <switches>
            <add name="System.Net" value="Verbose"/>
        </switches>
        <sharedListeners>
            <add name="System.Net"
              type="System.Diagnostics.TextWriterTraceListener"
              initializeData="network.log"
              traceOutputOptions="ProcessId, DateTime"
      />
        </sharedListeners>
        <trace autoflush="true"/>
    </system.diagnostics>
</configuration>

Есть ли способ записать все сетевые трафики c на Mono из самого приложения? Я не хочу запускать внешнюю программу для захвата трафика c.

...