【问题标题】:Fiddler not displaying OData Http requests where method is PATCH/MERGE, DELETEFiddler 不显示方法为 PATCH/MERGE、DELETE 的 OData Http 请求
【发布时间】:2014-09-02 01:43:30
【问题描述】:

我正在开发一个带有 MVC Web Api OData v4 服务器的 Win8 Store 应用程序。

我已经设置了一个 Win 8 单元测试客户端项目来调试对 OData 服务器的 OData Http 请求,并且我正在使用 Fiddler v4.4.9.3 来监控 Http 流量。服务器和客户端都在本地机器上运行,并且客户端服务 uri 设置为 localhost.fiddler:xxxx

我能够在 Fiddler Web 会话中看到所有 GET 和 POST 请求,但来自客户端的 PATCH/MERGE 和 DELETE 请求没有出现! (它们肯定存在,因为它们执行服务器控制器方法。)

但是,当我在 Fiddler 作曲家中创建和执行 PATCH/MERGE 和 DELETE 请求时,它们确实会出现在网络会话中。

我检查了过滤器、规则、脚本、卸载并重新安装了 Fiddler,遵循了 Fiddler not displaying sessions 等处的建议,但无济于事。

有谁知道可能是什么问题?

【问题讨论】:

  • 您是否有机会使用asp.net codeplex site 上提供的示例客户端?其中一些拦截了在控制台中调试的 odata 调用,我认为这样做不会通过 Fiddler 路由,尽管我不能绝对这么说。在运行这些示例客户端时,我注意到了同样的行为。

标签: odata fiddler


【解决方案1】:

如果您使用的是 OData 客户端库,则这是预期的。当您尝试从客户端更新/删除实体时,客户端会从您之前检索的有效负载中加载 URL。这些 URL 中没有“.fiddler”,Fiddler 无法捕获它们。

例如,您想要更新 Product 对象。通常你必须先查询对象。在对象中有一个以某种方式存储的编辑链接。编辑链接是一个 URL(当然没有“.fiddler”)。稍后当您尝试更新产品对象时,客户端会向编辑链接发送 PUT/PATCH 请求。

【讨论】:

  • 可以通过使用提琴手脚本修改来自 localhost:PPPPP localhost.fiddler:PPPPP 的响应正文中的 odata.context url 来纠正此问题。例如在静态函数 OnBeforeResponse(oSession: Session) 中放 oSession.utilReplaceInResponse("localhost:PPPPP", "localhost.fiddler:PPPPP" )
【解决方案2】:

如果您点击Troubleshoot Filters 并且没有出现流量,则表示流量没有发送到 Fiddler。这可能是客户端堆栈中的一个错误,尽管调用应该失败,因为localhost.fiddler 仅在流量通过 Fiddler 时才有意义;否则会出现连接失败。

【讨论】:

  • 感谢您的建议埃里克。我尝试了过滤器故障排除,但补丁/合并和删除请求仍然没有出现。我还编译了该项目并在另一台开发机器上运行,结果相同。我明白你的观点是关于 localhost.fiddler 但请求肯定存在,但尚未出现在 Fiddler 会话列表中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
相关资源
最近更新 更多