I have an ASP.NET application that uses ajax, update panel, and a timer. The page should load fully so that the user see's the please wait text/images. Then a timer should execute a function one time. Below is my code. The issue is that I have a function called LoadQuestions. It can take up to 15 seconds to update data through web services to a seperate application. If I comment out loadquestions, the timer ticks, then the code executes fine. If I leave loadquestions in the code, it seems to time out the ajax. The remaining code executes, but then the page dies and the redirect doesnt complete. Any ideas?
//----------------------------------------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
Page.MaintainScrollPositionOnPostBack = true;
ScriptManager.RegisterStartupScript(this, typeof(Page), "ScriptDoFocus", Utility.SCRIPT_DOFOCUS.Replace("REQUEST_LASTFOCUS", Request["__LASTFOCUS"]), true);
if (!IsPostBack)
{
if (Session["KEY"] != null)
{
Session["REDIRECT"] = null;
Timer1.Enabled = true;
Session["Timer"] = null;
Constit constit = (Constit)Session["KEY"];
constit.ProcessingError = null;
Session["KEY"] = constit;
}
}
else
{
if(Session["Timer"] != null)
Timer1.Enabled = false;
}
}
//----------------------------------------------------------------------------------
private void ProcessOrder()
{
Utility utility = new Utility();
PaymentProcessor payment = new PaymentProcessor();
Constit constit = (Constit)Session["KEY"];
string message = string.Empty;
decimal price = constit.ExamPrice;
if (constit.Reinstate)
price = price + 200;
int scTransNum;
if (!payment.ProcessMeetingPurchase(constit.Constit_ID, constit.BillFirstName, constit.BillLastName, constit.MeetingUID, constit.Reinstate, price, "COMP", constit.CCNumber.Replace("-", ""), constit.CCExpDate, constit.SecurityCode, constit.BillStreet, constit.BillZipCode, constit.HomePhone, constit.EmailAddress, constit.ExamName, out scTransNum, out message))
{
constit.ProcessingError = "<b>Can Not Process Application</b><BR/> <Font Size=-1>" + message.Replace("meeting", "exam");
Session["KEY"] = constit;
string redirectURL = Page.ResolveClientUrl("process_payment.aspx");
string script = "window.location = '" + redirectURL + "';";
ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", script, true);
}
else
{
utility.SendReceipt(constit.ExamPrice.ToString("C"), constit.Exam + " Exam", constit.EmailAddress, constit.CCNumber.Replace("-", "").Substring(constit.CCNumber.Replace("-", "").Length - 4, 4), constit.FirstName + " " + constit.LastName, constit.Constit_ID);
LoadQuestions(constit, scTransNum);
string redirectURL = Page.ResolveClientUrl("application_complete.aspx");
string script = "window.location = '" + redirectURL + "';";
ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", script, true);
}
}
//----------------------------------------------------------------------------------
private bool LoadQuestions(Constit constit, int scTransNum)
{
string error = string.Empty;
if (constit.LoadQuestions(constit, scTransNum, out error))
{
return true;
}
else
return false;
}
//-----------------------------------------------------------------------------
protected void Timer1_Tick(object sender, EventArgs e)
{
Session["Timer"] = true;
ProcessOrder();
}
//-----------------------------------------------------------------------------
Select all Open in new window
<asp:ScriptManager ID="ScriptManager" runat="server" AsyncPostBackTimeout="120"
The value is in seconds, so the above line would mean 2 minutes.
Try setting a reasonable value there and see if it helps you.