c# - 从 HttpWebRequest/Response 获取底层的 tcp 连接

标签 c# .net httpwebrequest tcpclient

当我连接到一个比 HttpWebRequest 和 HttpWebResponse 给我的更低级别的网站时,我试图获得更多关于发生了什么的信息。我正在使用 C#。

我希望能够看到有关 dns 查找的信息以及建立连接所花费的时间(如果建立了新连接)。 HttpWebRequest 和 HttpWebResponse 在比这更高的级别上工作,我想问一下是否有办法获取底层 TcpClient 对象(或它们使用的任何低级别对象)。

如果不可能,那么有没有一种方法可以在不通过 HttpWebRequest 或 HttpWebResponse 的情况下获取和操作 .net 正在维护的连接列表?

我无法更改我正在处理的应用程序以使用 TcpClient,因为可靠地实现所有 http 内容太耗时了。

最佳答案

我能为您提供的最佳方法是使用以下信息创建一个 app.config 文件:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <system.diagnostics>
        <trace autoflush="true" />
            <sources>
                <source name="System.Net" maxdatasize="1024">
                    <listeners>
                        <add name="MyTraceFile"/>
                    </listeners>
                </source>
              <source name="System.Net.Sockets" maxdatasize="1024">
                    <listeners>
                        <add name="MyTraceFile"/>
                    </listeners>
                </source>  
           </sources>


            <sharedListeners>
                <add
                  name="MyTraceFile"
                  type="System.Diagnostics.TextWriterTraceListener"
                  initializeData="System.Net.trace.log"
                />
            </sharedListeners>
            <switches>
                <add name="System.Net" value="Verbose" />
              <add name="System.Net.Sockets" value="Verbose" />
            </switches>
    </system.diagnostics>
</configuration>

这将启用跟踪并将在您的应用程序文件夹中踢出一个名为“System.Net.trace.log”的日志文件。您不会获得您正在寻找的所有信息,并且在应用程序运行时这些信息不容易使用,但至少您不需要运行第三方程序。它没有太多记录,但有 some information至少在那里。

关于c# - 从 HttpWebRequest/Response 获取底层的 tcp 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4586049/

相关文章:

c# - 只允许工厂方法实例化对象(防止实例化基类和未初始化的对象)

asp.net - 我可以在不设置 ContentLength 的情况下发出 WebRequest

c# - 我们可以使用 LINQ 扩展方法 SequenceEqual 使用 IEqualityComparer 接口(interface)逐字段比较两个复杂集合吗

c# - 我如何在 Monogame 项目中实现 Awesomium 1.7.4.2?

c# - 对多个存储库使用相同的 DbContext 是否明智?

c# - Azure 存储 - 403 禁止访问

c# - 类之间的聚合和组合关系

c# - 针对 x86 和 x64 的设置?

c# - HttpWebRequest 未返回,连接关闭

C# - 如何通过 HTTP 读取连续的 XML 流