【问题标题】:Can't see WebClient post request in Fiddler在 Fiddler 中看不到 WebClient 发布请求
【发布时间】:2014-09-14 18:33:39
【问题描述】:

我有一个 ASP.NET WebForms 应用程序(发送方),它将 WebClient 发布请求发送到同一台开发机器上的另一个 ASP.NET 应用程序(接收方)。通过单击发件人应用程序中的按钮启动 WebClient 帖子。这是一个测试应用程序,表单只有按钮。我可以从 Fiddler 中的按钮看到帖子,但看不到来自 WebClient 方法的帖子请求。 为什么?

我知道 WebClient 帖子成功运行,因为断点在接收方应用程序中命中,并且 Forms 集合具有来自发送方应用程序的 WebClient 请求的输入字段的值。 (使用 Windows 8.1)

更新这是电话:

using (var client = new WebClient())
{
    client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
    var data = "FirstName=John";
    var result = client.UploadString("http://localhost/testform/default.aspx", "POST", data);
    Console.WriteLine(result);
}

【问题讨论】:

    标签: asp.net .net webforms webclient fiddler


    【解决方案1】:

    .NET 和 IE(版本 9 之前)不通过任何代理向 localhost 发送请求。有 3 种可能的解决方案:

    1. 使用机器名或主机名:http://<machine name>/testform/default.aspx
    2. 在 URL 中添加ipv4.fiddlerhttp://localhost.fiddler/testform/default.aspx
    3. 为提琴手添加自定义规则:
    static function OnBeforeRequest(oSession:Fiddler.Session){ 
        if (oSession.HostnameIs("MYAPP")) { 
            oSession.host = "<put your ip address and port here>"; 
        } 
    }
    

    那么你应该可以通过http://myapp/testform/default.aspx捕获流量

    参考Problem: Traffic sent to http://localhost or http://127.0.0.1 is not captured

    【讨论】:

      【解决方案2】:

      可能是多种情况。这里有一些可能性

      1. 您已将 Fiddler 设置为过滤以仅显示来自特定进程(或某些其他类型的过滤器,但进程是最容易意外打开的过滤器)
      2. 您尚未在 Fiddler 中打开 HTTPS 捕获,但这个丢失的请求是 HTTPS(默认关闭)
      3. 您的 WebClient 配置了自定义代理,并且没有从 IE 中提取默认设置

      【讨论】:

      • 这些都不适用。我没有任何过滤器。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多