VS2015 / ASP.NET WebService:服务器端超时,连接中止

时间:2016-06-08 18:07:20

标签: asp.net web-services wcf iis-express

这个超时让我疯狂,我真的需要你的帮助来理解它:

我有一个客户端,它是一个python / WSGI / flask应用程序(在Tornado服务器上),使用lib requests来调用我的服务器中的Web服务,一个ASP.NET网站项目(运行于现在是VS2015 iisexpress.exe。

简单地使用.svc文件和带有[ServiceContract][OperationContract]注释的C#类声明Web服务,而web.config中没有关于此WebService的内容。

 [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class GestionCand
    {
     ...
        [WebInvoke(Method = "POST", UriTemplate = "cand/listByPk", RequestFormat = WebMessageFormat.Json)]
        [OperationContract]
        public Message GetbyPkList(String listPk)
        {
        ...

一切运行良好,直到我尝试处理需要3到4分钟的请求(一个包含数千个条目的长映射循环)。 调用有效,但是2分钟后,当我的.NET Web服务仍在循环中时(所以没有错误,在它到达代码结束之前),我的python应用程序说:

File "/Mis/lib/python2.7/site-packages/requests/adapters.py", line 415, in send
    raise ConnectionError(err, request=request)
ConnectionError: ('Connection aborted.', BadStatusLine("''",))

我不确定那个错误,但经过一些搜索,这意味着服务器决定停止连接,这就是我在wireshark上看到的内容(从ASP.NET服务器到python app的TCP调用)使用[FIN,ACK]),但.NET代码仍然正常运行,它还没有完成。 连接中止后,我的WebService执行完成1分钟,因此当服务器决定切断连接时,它不会等待或停止执行。

在那里我开始尝试很多解决方案而且没有一个有效:更改<httpRuntime executionTimeout>(和debug=false上的编译),在WebService中创建不同的web.config要设置此executionTimeout的文件夹,请添加basicHttpBinding部分以设置SendTimeout,在Timeout=None调用上设置requests ...没有任何更改2分钟超时。

真的是IIS / ASP.NET执行此超时吗?反正有改变吗?我做错了什么?

1 个答案:

答案 0 :(得分:0)

我在生产服务器(IIS8)上尝试了我的长时间执行....它的工作原理!没有任何超时设置! 这个不可编辑的服务器端超时似乎只存在于VS2015 IIS Express ....