设为首页 加入收藏

TOP

C# 神奇的Web services 请求超时问题 排查分析
2019-09-17 18:45:39 】 浏览:27
Tags:神奇 Web services 请求 超时 问题 排查 分析

服务器上有两个接口,一个是Web Services(asmx文件)接口,一个是MVC API (普通的GET请求接口)

神奇的事情是这样的,只要我使用WebRequest请求两次,再使用Web Services 就超时,怎么也不行。

 static void Main()
        {
            
            //连续两次请求使用WebRequest 
            GetRequest();
            GetRequest();

            //此处请求web servics 超时。。。
            ServiceReference1.WebService1SoapClient clent = new ServiceReference1.WebService1SoapClient("WebService1Soap", "http://" + ServerAddress + "/WebService1.asmx");
            string result = clent.HelloWorld();

            Console.WriteLine(result);
            Console.ReadKey();
        }
         
        public static void GetRequest()
        {
            string UpdateReportStatusURL = "http://" + ServerAddress + "/API/Default/updateReportStatus?sglno=234";
            string url = UpdateReportStatusURL;
            WebRequest wq = WebRequest.Create(url);
            WebResponse response = wq.GetResponse();
            response.GetResponseStream();
           // response.Dispose();
        }

排查

WebRequest 和 WebService1SoapClient 请求的是同一台服务器,会复用TCP链接。
当使用WebRequest 连接后,TCP被挂起,导致Web Services 一直等待连接直到超时。。

注意,抓包不能使用Fiddler,因为Fiddler是代理,只要Fidder会自己和服务器建立TCP,只要打开Fiddler就好了。

修复

response 使用完成后,要释放对象。不然response会占用TCP,导致Web Services 超时。。
response.Dispose();

经验学习

WebRequest 和 WebService1SoapClient 虽然是不同的对象,但是.NET发现请求同一个地址时,会复用TCP端口。

https://github.com/zifeiniu/TestBugWebServices

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇微服务(入门一):netcore安装部.. 下一篇微服务(入门二):netcore通过co..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目