Как отследить трафик Websocket с IIS

Я использую IIS 10 и мне нужно отслеживать трафик, входящий и выходящий из.NET 4.5.2 WebSocket, который создается, когда кто-то открывает веб-сокет на сервере, это кажется совершенно невозможным.

Текущая конфигурация трассировки - это журналы System.Net, System.Net.Http, System.Net.Sockets и System.Net.WebSockets.

Они записаны в цель NLog. Всякий раз, когда сервер отправляет или получает данные из других сокетов, таких как Redis или Azure Storage, я получаю следы в моем журнале.

Однако, когда клиент подключается к серверу, я получаю трассировку http при открытии WebSocket, но нет данных между клиентом и сервером.

Вопрос в основном, действительно ли IIS пишет что-то для трассировки относительно AspNetWebSocketContext.WebSocket? Если так, как я могу войти эти данные?

Чтобы уточнить мою конфигурацию, Nlog config:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="false" autoReload="true">
    <extensions>
        <add assembly="NLog.Target.TimeRoll" />
    </extensions>
    <targets>
        <target xsi:type="File" name="diag" fileName="${basedir}/${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${message} ${exception:format=tostring}" />
        <target xsi:type="TimeRoll" name="timedTarget" Limit="30" fileName="\Timed_" layout="${longdate} ${uppercase:${level}} ${message} ${exception:format=tostring}" />
  </targets>
  <rules>
        <logger name="*" minlevel="Trace" writeTo="timedTarget,diag">
  </rules>
</nlog>

И соответствующая часть web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.diagnostics>
        <trace>
            <listeners>
                <add name="nlog" type="NLog.NLogTraceListener, NLog"></add>
            </listeners>
        </trace>
        <sources>
            <source name="System.Net" switchValue="All" tracemode="includehex" maxdatasize="250">
                <listeners>
                    <add name="nlog" />
                </listeners>
            </source>
            <source name="System.Net.Http" switchValue="All" tracemode="includehex" maxdatasize="250">
                <listeners> 
                    <add name="nlog" />
                </listeners>
            </source>
            <source name="System.Net.Sockets" switchValue="All" tracemode="includehex" maxdatasize="250">
                <listeners>
                    <add name="nlog" />
                </listeners>
            </source>
            <source name="System.Net.WebSockets" switchValue="All"  tracemode="includehex" maxdatasize="250">
                <listeners>
                    <add name="nlog" />
                </listeners>
            </source>
        </sources>
        <switches>
        </switches>
        <sharedListeners>
            <add name="nlog" type="NLog.NLogTraceListener, NLog" />
        </sharedListeners>
    </system.diagnostics>
</configuration>

0 ответов

Другие вопросы по тегам