httpRuntime executeTimeout无法正常工作?

时间:2018-12-04 21:54:19

标签: asp.net sql-server web-config

在ASP.NET 4.5.2的web.config中,我们将executionTimeout设置为小于默认超时值:

我已经通过使用System.Threading.Thread.Sleep(600000);测试了一个页面。而且我发现它在90秒后会适当超时。

在实际的应用程序中,我们使用Global.asax中的Application_EndRequest()来计时页面执行时间:

void Application_EndRequest()
{
    double timeElapsed = DateTime.Now.Subtract(HttpContext.Current.Timestamp).TotalSeconds;

    using (System.Data.SqlClient.SqlConnection cs = DB.LMSAdminConn())
    {
        cs.Open();
        using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("EXEC logpageexecutiontime @pagename, @executiontime", cs))
        {
            cmd.Parameters.Add("@pagename", System.Data.SqlDbType.VarChar).Value = thisURL;
            cmd.Parameters.Add("@executiontime", System.Data.SqlDbType.Float).Value = timeElapsed;
        }
    }
}

这似乎获得了准确的页面加载时间,但是有时它记录的页面加载时间远远超过脚本超时。在生产阶段,页面的突然加载时间将突然跳升至1000秒或更长。我们确实在某些页面上使用了更高的Server.ScriptTimeout,但在数据库中记录了高加载时间的页面上却没有使用。 Server.ScriptTimeout在作用域内是本地的,仅适用于当前请求。我仔细检查了一下,然后debug = false。

据我了解,在90秒的httpRuntime执行超时的情况下,任何页面的运行时间都不会超过90秒-它们将被终止。那么,为什么您认为我们看到记录的页面加载时间远远超过了executeTimeout值?

0 个答案:

没有答案