【问题标题】:VS2015/ASP.NET WebService: Server-side timeout, Connection abortedVS2015/ASP.NET WebService:服务器端超时,连接中止
【发布时间】:2016-06-08 18:07:19
【问题描述】:

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

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

Web 服务仅使用 .svc 文件和带有 [ServiceContract][OperationContract] 注释的 C# 类进行声明,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 服务器到带有[FIN,ACK] 的 python 应用程序的 TCP 调用),但 .NET 代码仍在正常运行,尚未完成。 我的 WebService 执行在连接中止 1 分钟后完成,因此当服务器决定切断连接时,它不会等待或停止执行。

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

真的是 IIS/ASP.NET 造成了这个超时吗?有没有办法改变它?我做错了什么?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 1970-01-01
      • 2013-11-30
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 2015-03-21
      • 2023-03-03
      相关资源
      最近更新 更多