C# 理解网络请求

C# 理解网络请求,c#,.net,performance,webrequest,C#,.net,Performance,Webrequest,在我的代码(C#)中,我使用的是WebRequest: var request = WebRequest.Create(url); 出于某种原因,这条线路运行大约需要2-3秒。我已寻找解决方案,但找不到创建请求的任何解决方案。我尝试了不同的URL(http和https、谷歌等),但似乎没有任何帮助。还有其他人经历过这样的行为吗?有人能解释一下在创建请求的过程中到底发生了什么吗?还有别的选择吗 顺便说一句,我正在进行64位Win7(训练营) 编辑-使用秒表测量以下代码的3.126秒(无线): 在

在我的代码(C#)中,我使用的是WebRequest:

var request = WebRequest.Create(url);
出于某种原因,这条线路运行大约需要2-3秒。我已寻找解决方案,但找不到创建请求的任何解决方案。我尝试了不同的URL(http和https、谷歌等),但似乎没有任何帮助。还有其他人经历过这样的行为吗?有人能解释一下在创建请求的过程中到底发生了什么吗?还有别的选择吗

顺便说一句,我正在进行64位Win7(训练营)

编辑-使用秒表测量以下代码的3.126秒(无线):

在同一个网络上,仅有线连接,耗时0.01秒

谢谢大家

已经发现代理检测可能需要花费相当长的时间。如果知道不存在代理,请尝试将WebRequest的代理属性设置为null

var request = WebRequest.Create("http://www.google.com");
request.Proxy = null;
更新 我没有其他的想法,但是这里有一些你可以尝试缩小问题范围的东西

  • 通过在配置文件中放入以下代码来启用日志记录:

    <configuration>
      <system.diagnostics>
        <trace autoflush="true" />
        <switches>
          <add name="System.Net" value="Verbose"/>
        </switches>
      </system.diagnostics>
    </configuration>
    
    
    
  • 查看
    WebRequest的源代码。在ILSpy或类似工具中创建
    ,并尝试直接执行它所做的相同操作。例如,您可以尝试创建一个
    新的HttpWebRequest(…)
    而不是调用
    WebRequest.Create
    ,然后查看是否得到相同的行为


  • 你如何衡量创建请求所需的时间?如果你只是在浏览器中键入url需要多长时间?如果所有其他源都失败了,并且你想看看.Net在幕后做了什么,你可以在.Justin上获得.Net源本身的副本-我是通过日志记录来衡量的-我知道这不是很准确,但它给出了一个想法。比纳——例如,www.google.com不到一秒钟。所以当创建一个请求时,我实际上正在访问它?这没有什么意义,它只是创建一个HttpWebRequest或FtpWebRequest实例,具体取决于url。在我的机器上需要3微秒。你需要用秒表来测量。这在过去肯定是我的问题,因为配置错误的代理设置。确实如此,但我的延迟是第一行(创建),而不是响应。谢谢anyways@Barracuda:啊,我想是实际连接花费了这么长时间。我补充了一些额外的想法。祝您好运。@Barracuda:您可能还需要检查此问题是否相关:。听起来,当系统试图打开配置文件以确定连接设置时,可能会出现某种死锁。
    <configuration>
      <system.diagnostics>
        <trace autoflush="true" />
        <switches>
          <add name="System.Net" value="Verbose"/>
        </switches>
      </system.diagnostics>
    </configuration>