You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为VB.NET中特定Web Service方法设置超时时长(超2分钟)

解决ASP.NET Web Service超时问题:调整ProcessValidateDRCases方法的超时时间

当然可以调整超时时间啦!针对你遇到的ProcessValidateDRCases方法因数据库操作超时(2分钟触发System.Web.HttpException: Request timed out)的问题,咱们需要从客户端调用端和服务端配置两个层面入手,具体方案如下:

一、客户端调用端:设置Web Service代理的超时时间

你的调用代码里使用了WSICI_COMPASSMonitor.BatchMonitoring这个代理类,直接给它的Timeout属性设置更大的值即可(单位是毫秒)。比如设置为5分钟:

Public Sub ProcessValidateDRCases()
    Dim wsCasyBatchMonitor As New WSICI_COMPASSMonitor.BatchMonitoring
    Try
        ' Get and set the web service url appropriately.
        WebServiceURL = ReadSettingsValue(ALIAS_WEBSERVICE_URL)
        If WebServiceURL <> "" Then
            wsCasyBatchMonitor.Url = WebServiceURL & "/BatchMonitoring.asmx"
            ' 设置超时时间为5分钟(300秒 × 1000毫秒)
            wsCasyBatchMonitor.Timeout = 1000 * 60 * 5
            Log(LogType.Warning, "Calling Web Method ProcessValidateDRCases() in ICI_COMPASSMonitoring", System.Reflection.MethodBase.GetCurrentMethod().Name)
            ' call the web method now.
            wsCasyBatchMonitor.ProcessValidateDRCases()
            Log(LogType.Warning, "Web Method call ProcessValidateDRCases() completed in ICI_COMPASSMonitoring", System.Reflection.MethodBase.GetCurrentMethod().Name)
        End If
    Catch ex As Exception
        LogException(LogType.Error, "Failed to call WS ProcessValidateDRCases with URL: " & ReadSettingsValue(ALIAS_WEBSERVICE_URL), System.Reflection.MethodBase.GetCurrentMethod().Name, ex)
    Finally
        wsCasyBatchMonitor.Dispose()
    End Try
End Sub

注意:如果设置为Timeout = -1表示永不超时,但不建议这么做,尽量根据实际执行时间设置一个合理的最大值。

二、服务端配置:修改ASP.NET请求超时限制

ASP.NET默认的请求执行超时时间是110秒(约1分50秒),这就是为什么你的方法执行2分钟就触发超时的原因。需要在服务端的web.config文件中修改httpRuntime节点的executionTimeout属性:

<configuration>
  <system.web>
    <!-- 设置为300秒(5分钟),根据实际需求调整 -->
    <httpRuntime executionTimeout="300" maxRequestLength="4096" />
  </system.web>
</configuration>

重要提醒:这个设置仅在web.config中compilation节点的debug="false"时生效,debug模式下ASP.NET会忽略超时限制。

额外优化建议(更推荐)

虽然调整超时能解决问题,但从性能和稳定性角度,更建议优化ProcessValidateDRCases方法里的数据库操作:

  • 把循环处理10条记录的单条数据库操作,改成批量操作(比如使用SQL的批量更新/插入语句),减少数据库交互次数;
  • 检查数据库操作是否有可以优化的地方,比如添加索引、简化查询逻辑,提升单条操作的执行速度;
  • 如果业务允许,考虑把这个耗时操作改成异步执行(比如使用后台任务队列),避免长时间占用Web请求线程。

内容的提问来源于stack exchange,提问作者Sangeetha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 17:58:10