欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

我发现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 接口 (这里第三次调用超时)

}

我发现C# 请求 Web services 的Bug,求帮助?

就是第三次,神奇的第三次,每次循环都是第三次失败。并且怎么也修复不好,就算重新new 一个web services对象都不行。只能重启程序才能再次连接服务器)

排查

当我准备抓包的时候,发现只要打开 fiddler 就好了,因为fidder 是代理http请求,fidder会自己重新和服务器建立tcp连接

猜想

webrequest 和 webservice1soapclient 请求的是同一台服务器,
会复用?tcp连接。。
然后webrequest 用完连接后关掉?
webservice1soapclient 一直使用挂起的哪个连接???
导致超时? 而且再怎么new 个新对象都超时?

注意

https://github.com/zifeiniu/testbugwebservices

代码已经提取出来写了一个单独的demo
主要,服务端要单独部署到一台机器上,不要再本机实验。