提高单个Web服务的超时时间

时间:2010-03-29 09:28:07

标签: c# .net web-services

我的网络配置如下:

<system.web>
    <compilation debug="false"/>
    <httpRuntime executionTimeout="90"/>
</system.web>

这适用于大多数Web服务函数,但是一个函数的查询运行时间很长(5分钟),并且在完成之前将停止。是否可以仅为此Web服务将运行时设置为5分钟?

例如:

  MyWebServices.asmx?op=WS_LongMethod --> Timeout of 5 minutes

我已经考虑过运行数据库查询async(fire and forget),但是通过ODBC使用sybase / oracle似乎不可能。

3 个答案:

答案 0 :(得分:12)

是的,你可以这样做。在web.config中,您需要添加<location/>元素:

<location path="Path_To_Your_Service.asmx">
    <system.web>
        <httpRuntime executionTimeout="90"/>
    </system.web>
</location>

<location/>元素为您提供了一种机制,您可以将web.config属性应用于站点中的特定路径。

答案 1 :(得分:2)

您可以使用Web服务中的委托异步调用另一个方法。在此方法中,您可以执行数据库IO。这意味着您将在操作完成之前返回调用者,但是如果您生成唯一ID并存储与该ID相关的任何信息,则可以在以后检索它。

答案 2 :(得分:-1)

您是否检查过网络服务的.Timeout属性?

  

指示XML Web服务客户端等待同步XML Web服务请求完成的时间(以毫秒为单位)。