我发现C# 请求 Web services 的Bug,求帮助?
程序员文章站
2022-04-09 10:10:40
我就不说这个Bug让我调试了多久,怎么坑的。。直接说结果。 服务器上有两个接口,一个是Web Services(asmx文件)接口,一个是MVC API (普通的GET请求接口) 神奇的事情是这样的,我循环请求两个接口的时候(不要问我为啥这样写),在第三次Web Services 超时。。 for( ......
我就不说这个bug让我调试了多久,怎么坑的。。直接说结果。
服务器上有两个接口,一个是web services(asmx文件)接口,一个是mvc api (普通的get请求接口)
神奇的事情是这样的,我循环请求两个接口的时候(不要问我为啥这样写),在第三次web services 超时。。
for()
{
使用 webrequest get mvc 接口
在使用 webservice1soapclient 调用 web services 接口 (这里第三次调用超时)
}
就是第三次,神奇的第三次,每次循环都是第三次失败。并且怎么也修复不好,就算重新new 一个web services对象都不行。只能重启程序才能再次连接服务器)
排查
当我准备抓包的时候,发现只要打开 fiddler 就好了,因为fidder 是代理http请求,fidder会自己重新和服务器建立tcp连接
猜想
webrequest 和 webservice1soapclient 请求的是同一台服务器,
会复用?tcp连接。。
然后webrequest 用完连接后关掉?
webservice1soapclient 一直使用挂起的哪个连接???
导致超时? 而且再怎么new 个新对象都超时?
注意
https://github.com/zifeiniu/testbugwebservices
代码已经提取出来写了一个单独的demo
主要,服务端要单独部署到一台机器上,不要再本机实验。