使用Fiddler作为HttpWebRequest的代理需要运行Fiddler。

3

我正在开发一个Web应用程序,需要进行大量的HttpWebRequests。为了更方便地调试,我已经在我的web.config中设置了以下内容:

<system.net>
     <defaultProxy>
         <proxy proxyaddress="http://127.0.0.1:9999" />
      </defaultProxy>
</system.net>

这样可以让我的所有HttpWebRequests通过Fiddler代理。问题是我需要让Fiddler运行,以便我的应用程序正常工作。
理想情况下,我希望当Fiddler正在运行时通过它进行代理,并且在没有运行Fiddler的情况下不进行代理,而无需每次更改我的web.config。

1
@lboshuizen - 我不太确定你的建议如何使用 - 显然,如果服务器向其他资源发出请求,客户端甚至都不会知道... - Alexei Levenkov
@AlexeiLevenkov 我已经将我的代理尝试放在 DEV 编译器标志后面,所以我不担心任何意外情况会进入生产环境。 - Chris Lees
2
抱歉,"ping" 在一般意义上。请向 "127.0.0.1:9999" 发送 Web 请求,并检查响应是否包含 Fiddler 回声响应。 - Alexei Levenkov
@ChrisLees 是的,但是在调试无法控制的客户端时毫无意义。因此在这种情况下仍然需要使用 fiddler 客户端。 - lboshuizen
1
@lboshuizen假设我正在连接一个第三方服务,我无法控制。这个服务返回XML格式的数据。在我的应用程序服务器端,我需要调用该服务并将XML反序列化为可操作的对象。设置好之后,它可以运行一段时间,但突然间应用程序不能再将XML反序列化。由于Dot net反序列化机制的限制,很难找到问题出现的具体位置。在调试时,从Fiddler获取来自服务的原始XML数据非常有用。 - Chris Lees
显示剩余6条评论
2个回答

1

有几个选项。

首先,您可以直接在代码中设置相关对象的相关代理属性(而不是回退到配置XML),然后可以根据任何因素选择性地控制代理的使用。

或者,您可以尝试将scriptLocation属性设置为指向http://localhost:8888/proxy.pac,并使用Fiddler的about:configfiddler.proxy.pacfile.usefileprotocol设置为false,并勾选工具 > Fiddler选项 > 连接 > 使用PAC脚本框。


0

你有没有考虑另一种方法,通过在System.Net上启用跟踪侦听器?这不像使用Fiddler那样舒适,但对于零星的调试可能已经足够了。对于消息记录,只使用System.Net就足够了,但还有更多选择。

  <system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.Net">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>
      <!--<source name="System.Net.Sockets">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>-->
      <!--<source name="System.Net.Cache">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>-->
    </sources>
    <sharedListeners>
      <add
          name="System.Net"
          type="System.Diagnostics.TextWriterTraceListener"
          initializeData="System.Net.trace.log"
        />
    </sharedListeners>
    <switches>
      <add name="System.Net" value="Verbose" />
      <add name="System.Net.Sockets" value="Verbose" />
      <add name="System.Net.Cache" value="Verbose" />
    </switches>
  </system.diagnostics>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接