Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何使用IIS跟踪Websocket流量_Asp.net_Iis_System.net.websockets - Fatal编程技术网

Asp.net 如何使用IIS跟踪Websocket流量

Asp.net 如何使用IIS跟踪Websocket流量,asp.net,iis,system.net.websockets,Asp.net,Iis,System.net.websockets,我正在使用IIS 10,需要跟踪从.NET 4.5.2 WebSocket流入和流出的流量,该WebSocket是在有人向服务器打开WebSocket时创建的,这似乎是不可能的 当前跟踪配置为日志记录System.Net、System.Net.Http、System.Net.Sockets和System.Net.WebSockets 它们被写入非直瞄目标。每当服务器从其他套接字(如Redis或Azure存储)发送或接收数据时,我都会在日志中得到跟踪 但是,当客户端连接到服务器时,我在打开WebS

我正在使用IIS 10,需要跟踪从.NET 4.5.2 WebSocket流入和流出的流量,该WebSocket是在有人向服务器打开WebSocket时创建的,这似乎是不可能的

当前跟踪配置为日志记录System.Net、System.Net.Http、System.Net.Sockets和System.Net.WebSockets

它们被写入非直瞄目标。每当服务器从其他套接字(如Redis或Azure存储)发送或接收数据时,我都会在日志中得到跟踪

但是,当客户端连接到服务器时,我在打开WebSocket时会得到http跟踪,但在客户端和服务器之间没有数据跟踪

问题基本上是,IIS是否真的写了任何关于AspNetWebSocketContext.WebSocket的跟踪?如果是,我如何记录这些数据

为了澄清我的配置, Nlog配置:

<?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>


您的描述缺少基本信息。如何使用NLog?有System.Net跟踪来获取所有网络数据包,但NLog本身是否具有相同的功能?我使用了多个NLog目标,但实际上这并不重要。NLog仅将任何systems.diagnostics跟踪数据写入所选的目标日志。在我的例子中,我正在写入一个文件和一个为这个特定目的创建的滚动内存日志。我添加这些信息是为了表明我知道日志本身不是问题。我从System.Net获取网络数据包,但不是从OpenWebSocket获取的数据包。我将在问题中添加我的配置。您的描述缺少基本信息。如何使用NLog?有System.Net跟踪来获取所有网络数据包,但NLog本身是否具有相同的功能?我使用了多个NLog目标,但实际上这并不重要。NLog仅将任何systems.diagnostics跟踪数据写入所选的目标日志。在我的例子中,我正在写入一个文件和一个为这个特定目的创建的滚动内存日志。我添加这些信息是为了表明我知道日志本身不是问题。我从System.Net获取网络数据包,但不是从OpenWebSocket获取的数据包。我将把我的配置添加到问题中。