如何减少asp.net中的响应超时?

时间:2016-12-20 11:45:22

标签: asp.net web-config httpresponse

我有一些http客户端有时需要很长时间才能完成请求,我希望在特定的时间长度(例如5秒)后切断它们。

我知道在web.config中你可以将executionTimeout设置为一个值,但是当我设置它时,api似乎不遵守它。

为了测试这个,我正在创建一个控制器,Thread.Sleep的值设置为大于我在web.config中设置的值,但响应没有被切断。

3 个答案:

答案 0 :(得分:0)

您可以在web.config中设置此值。例如,要更改一个特定页面的超时:

<location path="somefile.aspx">
    <system.web>
        <httpRuntime executionTimeout="180"/>
    </system.web>
</location>

时间以秒为单位。

答案 1 :(得分:0)

虽然我没有设法开箱即用,但我使用Polly

取得了一些成功

答案 2 :(得分:-1)

通常,第一个也是最简单的方法就是将configuration/system.web/sessionState@timeout值更改为类似“90”的值。这应该意味着您希望用户的会话一直持续到90分钟的空闲时间窗口结束。

更改web.config:

     ...       ...  

这里有几个问题在一起: 应用程序池的工作进程默认空闲超时也设置为20分钟 存储会话状态的默认模式是在IIS进程中

应用程序池空闲超时

通过单击分配了应用程序的应用程序池上的“高级设置”(IIS 7.5),可以找到应用程序池的设置。 &lt; - 图片在这里 - &gt;

确保此值至少设置为会话超时,以确保所有会话在整个会话超时期间保持不变。 这两个值彼此依赖的原因是因为会话信息实际存储在应用程序池的工作进程中。也就是说,如果工作进程因任何原因被关闭或终止,会话信息将丢失。

会话存储模式 存在会话信息的存储模式:

  • InProc(或正在处理中) - 默认 - 在IIS工作进程中存储会话信息
  • StateServer - 在单独的进程(ASP.NET状态服务)中存储会话信息
  • SQLServer - 在SQL数据库中存储会话信息

唯一容易丢失工作进程的会话信息的模式是状态存储在工作进程中。 StateServer和SQLServer模式都不受工作进程重置的影响。同样,当需要跨多个IIS服务器共享会话状态时,StateServer和SQLServer模式是唯一的选项。