开发环境
名称 | 版本 |
---|---|
操作系统 | Windows 10 X64 |
Visual Studio 2010 | 10.0.40219.1 SP1Rel |
Fiddler | v5.0.20194.41348 for .NET 4.5 |
Fiddler 操作参考
接口后抓包
需求描述
生产环境经常会出现下面几种情况的错误
500 (Internal Server Error) 的情况
502 Bad Geteway 的情况
504 Geteway timeout 的情况
500 的情况很好重现,在本地代码中抛出一个异常就行。
但是 502 和 504 的情况不好重现,于是想到了使用 Fiddler 来模拟这两个错误。
Web 页面
有一个同步按钮
代码如下
function SyncData() {
$.ajax({
type: "post",
//timeout:1000 * 60,//超时时间
url: "@Url.Action("SyncAllOuData", "Glbalance")",
data: { "": "" },
beforeSend:function(request){ //在请求之前调用的函数
$("#LoadDialog").dialog("open");
},
success: function (data) { //成功返回之后调用的函数
if (data == "Y") {
alert("同步完成!");
$("#SyncDialog").dialog('close');
} else {
alert("同步失败!");
}
},
error: function () { //调用出错执行的函数
alert(new Date());
alert("同步超时或报错,请联系系统管理员");
},
complete:function(request,textStatus){ //请求完成时运行的函数(在请求成功或失败之后均调用,即在 success 和 error 函数之后)。
//debugger
if(textStatus == 'timeout'){
alert('同步超时,请联系系统管理员');
}
$("#LoadDialog").dialog("close");
}
});
}
后台方法
public class GlbalanceController : Controller
{
public ContentResult SyncAllOuData()
{
try
{
//throw new Exception("测试");
//Thread.Sleep(1000*60*60*24);
Dictionary<string, object> args = new Dictionary<string, object> { };
this.model.SyncData("PRO_SYNC_ALL_BALANCE_FINAL", args);
return Content("Y");
}
catch (Exception ex)
{
throw ex;
//return Content("N");
}
}
}
配置 hosts
127.0.0.1 dev.fms.com
关闭代理
如果没有使用代理,忽略这个步骤
由于我的浏览器使用了代理,需要关闭掉,要不然 Fiddler 监听不到请求信息
这里需要把这个 自动配置脚本
关闭掉。
模拟 502 Bad Geteway 的情况
1.打开 Fiddler,在左下角命令行窗口输入 bpafter dev.fms.com
,这个命令的目的是设置断点修改 Response 信息。
2.页面上点击 同步
按钮,可以看到,进入了断点
3.接着回到 Fiddler,可以看到请求已经出现,耐心等待一下
4.请求变成了下面的状态,我们可以修改返回信息,这里我把返回的 Response 修改为 502 Bad Geteway
,并点击 运行到完成
5.浏览器弹出提示信息,并打印报错信息
模拟 504 Geteway timeout 的情况
操作方法同 502 的情况
关闭 Response 断点
左下角命令行窗口输入 bpafter
接口前抓包
需求描述
一个登录接口,登录前抓包修改用户名
后端代码
登录后端代码 “登录后端代码”)
Fiddler 设置
1.打开 Fiddler,在左下角命令行窗口输入 bpu Login
,这个命令的目的是抓取 Login
接口的信息。
2.接着 Postman 访问接口
3.Fiddler 会抓取到包,修改对应内容,并点击 运行到完成
,结果如下
Postman 结果如下