【问题标题】:Connection Timeout but Job still running连接超时但作业仍在运行
【发布时间】:2013-04-26 21:59:05
【问题描述】:

我有一个用于内部作业处理的 IIS 网站。这项工作大约需要 10 分钟。当用户单击按钮开始工作时,大约一分钟后,整个页面变成白色并显示“连接超时”。然而,这项工作与调用 3rd pty API 有关,它们仍在地下。

当作业仍在运行时,用户无法重新登录网站。作业完成后,用户可以再次使用该网站。

这里有什么秘密吗?

【问题讨论】:

    标签: c# asp.net multithreading iis timeout


    【解决方案1】:

    这里有几件事情在起作用。

    1. 网络浏览器等待响应的时间
    2. 网络服务器处理请求的时间
    3. 在客户端超时之前执行 sql 命令的时间。
    4. SQL 服务器在终止命令之前运行命令的时间。

    通常网络浏览器是一两分钟(不确定确切数字) 见:connection timeout in IE 请参阅:在 Firefox 中,您应该能够检查 about:config

    对于网络服务器和 asp.net,请参阅 HttpRuntimeSection.ExecutionTimeout Property

    命令超时见Sqlcommand.CommandTimeout默认为30秒。

    话虽如此...仅仅因为客户端停止等待并不会强制 sql server 停止运行命令。在连接上调用 close 应该会停止服务器上正在运行的命令,但是您可能需要等待它回滚它可能所做的任何更改。

    我怀疑您没有使用 sql server 代理作业,但如果您断开连接,则不会停止作业。

    如果只是一个客户端不等你发送输出,那么你可以做的就是向客户端发送一些输出......

    喜欢

      Response.Write("<!-- progress ... -->");
      Response.Flush();
    

    您必须刷新,以便它不会缓冲服务器端的响应

    【讨论】:

    • 谢谢。让我具体说明一下实际情况:在服务器端 C# 代码中,我们有一个循环,例如将 400 个对象发送到远程 API 调用。该页面显示连接超时,但服务器代码仍在运行。让我们排除 SQL 问题。
    猜你喜欢
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 2015-01-07
    相关资源
    最近更新 更多