我们的一个应用正在调用第三方 Web 服务,该服务最近已切换到不同的 URI。我们需要调查此问题,尝试查看旧地址的使用位置(代码/配置已修改为新地址)。有没有一种快速且轻量级的方法来记录服务器发出的任何出站 HTTP 请求?
它是一个在带有 IIS 7 的 Windows 2008 Server 上运行的 ASP.Net 应用程序。
答案1
安装http://www.winpcap.org/windump/在服务器上,并使用以下标志运行它:
windump -w "C:\Temp\tcpdump.log" dst 主机 {旧 IP 地址} dst 端口 80
您可以让它运行一天左右,然后查看日志。使用 -w 将写出原始数据包,这样您就可以准确地看到正在发送的内容(因此,希望知道发送它的是什么)。
请注意,我只使用过 tcpdump,即 windump 所基于的程序,因此如果它们之间存在差异,您可能需要调整标志。但是有很多 tcpdump 教程可以为您提供正确的指导。
答案2
wireshark! 规则!!!相当于 David bishop 上面建议的 GUI 版本 ^^^^^
但是如果你想要一个与 Windows 工具更加集成的工具,它还会枚举涉及的本地进程,sysinternal 工具这些都是微软免费的。
具体来说TCP查看器可用于查看哪个进程连接到哪个远程主机。(但是您必须回退到 windump 或 wireshark 来将连接与请求 URL 匹配,除非最近添加了该功能)
如果您想将所有这些请求记录到某个文件中,还有一个 Tcpvcon 命令行版本。但我想这与长时间运行任何数据包转储到文件具有相同的考虑因素,即注意不要填满你的磁盘并使盒子彻底崩溃。
答案3
不幸的是,我没有 ASP.Net 方面的经验,但我可以提供一种可以跟踪此问题的迂回方法。如果您在相关服务器前面运行 Squid,则很容易快速浏览 Squid 日志以识别对错误 URI 发出的请求。我不建议安装 Squid 盒只是因为这个原因,但如果您已经有 Squid 代理,这可能是识别错误 URI 的最快方法。