我已经建立了一个方案,将客户网站上的任何异常(ASP.NET 2.0应用程序)通过电子邮件发送给我。几乎每天晚上(通常发生在晚上)我都会收到如下错误:
Error: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Stack Trace:
at carart.products.Page_Error(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.TemplateControl.OnError(EventArgs e)
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.products_aspx.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
最后一个位置是Page_Error,因为我有一个 Page_Error 处理程序,它重定向到 Error.aspx 页面并向用户显示一条消息。在进行重定向之前,它会发送详细说明错误的电子邮件。
我真的无法判断这在我的代码中的哪个点失败了,但我假设它甚至没有Page_Load,因为它没有显示在堆栈跟踪中。
我每天晚上至少收到 3 或 4 个 - 但有时在白天也是如此,有时它会干扰客户结账和其他对我客户的业务至关重要的事情。
我该如何调试?我必须设置什么属性才能告诉它等待更长的时间才能连接到服务器?
,你可能想进一步调查为什么会发生超时,但为了增加超时(你最好将其设置为特定于页面),你可以在你的web.config中这样做:
<location path="somefile.aspx">
<system.web>
<httpRuntime executionTimeout="180"/>
</system.web>
</location>