Ajax "AsyncPostBackError" for ScriptManager, JScript error problem in .NetFramework 3.5 SP1

Last post 06-19-2009 10:33 PM by manpakhong. 0 replies.

Sort Posts:

  • Ajax "AsyncPostBackError" for ScriptManager, JScript error problem in .NetFramework 3.5 SP1

    06-19-2009, 10:33 PM
    • Member
      26 point Member
    • manpakhong
    • Member since 05-21-2007, 6:32 AM
    • Hong Kong
    • Posts 33

     Dear all,

    I migrated my company web applications from Visual Studio 2005, .NetFramework 2.0, ASP.net, Ajax extensions 1.0 to Visual Studio 2008 SP1, .NetFramework 3.5 SP1.

    I find that the code that contained AsyncPostBackError, when it is triggered. It will have JScript error.


    ======HTML Parts=====================================

    I simplified the code as follows:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
       
            <asp:ScriptManager ID="ScriptManager1" runat="server"
                onasyncpostbackerror="ScriptManager1_AsyncPostBackError">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
                </ContentTemplate>
            </asp:UpdatePanel>
       
        </div>
        </form>
    </body>
    </html>


    ===============Code Behind C# part =============================

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    public partial class Default3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            throw new ArgumentException();
        }
        protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
        {
            this.ScriptManager1.AsyncPostBackErrorMessage =
                e.Exception.Message;
        }
    }

    An error is appeared:
    Microsoft Visual Studio: Microsoft JScript runtime error:
    Sys.WebForms.PageRequestManagerServerErrorException: Value does not fall within the excepted range.
    =========================================================================================================

    And It can be fixed by the following solution:

    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Code in html^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="frmLogon.aspx.cs" Inherits="frmLogon" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <style type="text/css">
        body {
            font-family: Tahoma;
        }
        #AlertDiv{
        left: 40%; top: 40%;
        position: absolute; width: 200px;
        padding: 12px;
        border: #000000 1px solid;
        background-color: white;
        text-align: left;
        visibility: hidden;
        z-index: 99;
        }
        #AlertButtons{
        position: absolute;
        right: 5%;
        bottom: 5%;
        }
        </style>   
    </head>
    <body id="bodytag">
        <form id="form1" runat="server">
        <div>

        <asp:ScriptManager ID="scrMgr" runat="server">
        </asp:ScriptManager>
                <script type="text/javascript" language="javascript">
                    var divElem = 'AlertDiv';
                    var messageElem = 'AlertMessage';
                    var errorMessageAdditional = 'Please try again.';
                    var bodyTag = 'bodytag';
                    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
                    function ToggleAlertDiv(visString)
                    {
                         if (visString == 'hidden')
                         {
                             $get(bodyTag).style.backgroundColor = 'white';                        
                         }
                         else
                         {
                             $get(bodyTag).style.backgroundColor = 'gray';                        

                         }
                         var adiv = $get(divElem);
                         adiv.style.visibility = visString;

                    }
                    function ClearErrorState() {
                         $get(messageElem).innerHTML = '';
                         ToggleAlertDiv('hidden');                    
                    }
                    function EndRequestHandler(sender, args)
                    {
                       if (args.get_error() != undefined && args.get_error().httpStatusCode == '500')
                       {
                           var errorMessage = args.get_error().message
                           args.set_errorHandled(true);
                           ToggleAlertDiv('visible');
                           $get(messageElem).innerHTML = '"' +
                                    errorMessage + '" ' + errorMessageAdditional;
                       }

                    }
                </script>   
                <asp:UpdatePanel ID="upPnl" runat="server">
                    <ContentTemplate>
                                    <asp:Panel ID="pnlLoginControl" runat="server" BackColor="Transparent" Height="80px" Width="350px">
                                        &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                                        <asp:Label ID="lblUser_ID" runat="server" Text="User ID"></asp:Label>
                                        &nbsp; &nbsp;&nbsp;
                                        <asp:TextBox ID="txtUser_ID" runat="server" Width="160px" TabIndex="1"></asp:TextBox><br />
                                        &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                                        <asp:Label ID="lblUser_Password" runat="server" Text="Password"></asp:Label>
                                        &nbsp;
                                        <asp:TextBox ID="txtUser_Password" runat="server" Width="160px" TextMode="Password" TabIndex="2"></asp:TextBox><br />
                                        &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
                                        <asp:Button ID="btnLogin" runat="server" Text="Login" OnClick="btnLogin_Click" TabIndex="3" Width="80px">
                                        </asp:Button>

                                    </asp:Panel>       
                                    <asp:Button ID="btnMakeError" runat="server" onclick="btnMakeError_Click" OnClientClick="ClearErrorState()"
                                        Text="Error" />
                    </ContentTemplate>
                </asp:UpdatePanel>
                <div id="AlertDiv">
                    <div id="AlertMessage">
                    </div>
                    <br />
                    <div id="AlertButtons" >
                        <input id="OKButton" type="button" value="OK"
                               runat="server" onclick="ClearErrorState()" />
                    </div>
               </div> 
        </div>           
        </form>
    </body>
    </html>

    ^^^^^^^^^^^^^^^^^^^^^^^ Code in Code Behind ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Web.SessionState;
    using System.Collections;
    using System.Data.SqlClient;
    using System.Xml;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Collections.Generic;
    using System.Linq;

    public partial class frmLogon : System.Web.UI.Page
    {
        #region Variables declaration

        // Connection components
        private Connection mb_objConn;
        private DataSet mb_objDataSet;

        private SqlDataAdapter mb_objSqlDaUser;
        private SqlCommand mb_objSqlCmdUser;

        private SqlCommand mb_objSqlCmdUser1;

        private SqlTransaction mb_objSqlTransaction;

        #endregion Variables declaration

        #region Init Methods

        /* *
             * method to init and fill all
             * */
        private void mb_fnInitFillAll()
        {
            mb_fnInitUser();
        } // end mb_fnInitFillAll()

        /* *
         * method to init DataConnection
         * */
        private void mb_fnInit()
        {
            try
            {
                this.mb_objConn = new Connection(); // true for windows authentication, false for sql connection

                this.mb_objConn.pds_dataSet = new DataSet();
                this.mb_objDataSet = this.mb_objConn.pds_dataSet;

            } // end try
            catch (Exception ex)
            {
                throw ex;
                //Response.Output.Write("<script language=\"javascript\" type=\"text/javascript\"> alert(\"" + Misc.fnstringFormatforJavaScript(ex.Message) + "\") </script>");
            } // end catch (Exception ex)

        } // end mb_fnInit()

        /* *
         * method to init User DataAdapter and User SqlCommand
         * */
        private void mb_fnInitUser()
        {
            try
            {
                this.mb_objSqlCmdUser = new SqlCommand();
                this.mb_objSqlCmdUser.CommandType = CommandType.Text;
                this.mb_objSqlCmdUser.Connection = this.mb_objConn.pcon_sqlConnection;
                this.mb_objSqlCmdUser.CommandText = "select * from tabUser";

                this.mb_objSqlDaUser = new SqlDataAdapter(this.mb_objSqlCmdUser);
                this.mb_objSqlDaUser.Fill(this.mb_objDataSet, "tabUser");
            } // end try
            catch (Exception ex)
            {
                throw ex;
                //Response.Output.Write("<script language=\"javascript\" type=\"text/javascript\"> alert(\"" + Misc.fnstringFormatforJavaScript(ex.Message) + "\") </script>");
            } // end catch (Exception ex)

            //txtUser_Password.Text = "tester";
        } // end mb_fnInitUser()

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                this.mb_fnInit();
                this.mb_fnInitFillAll();
            } // end if (!IsPostBack)

            Page.Form.DefaultButton = this.btnLogin.UniqueID;
            Page.Form.DefaultFocus = btnLogin.UniqueID;
        }
        protected void btnLogin_Click(object sender, EventArgs e)
        {
            try
            {
                if (Page.IsValid)
                {
                    for (int i = 0; i < this.mb_objDataSet.Tables["tabUser"].Rows.Count; i++)
                    {
                        if (this.txtUser_ID.Text.CompareTo(this.mb_objDataSet.Tables["tabUser"].Rows[i]["User_ID"].ToString()) == 0)
                        {
                            if (this.txtUser_Password.Text.CompareTo(this.mb_objDataSet.Tables["tabUser"].Rows[i]["User_Password"].ToString()) == 0)
                            {
                                Session.Add("User_ID", this.txtUser_ID.Text);
                                Session.Add("User_Password", this.txtUser_Password.Text);
                                Session.Add("User_Login", "true");
                                //Session["User_ID"] = this.txtUser_ID.Text;
                                //Session["User_Password"] = this.txtUser_Password.Text;
                                //Session["User_Login"] = "true";

                                mb_fnUpdateUserCount();

                                Response.Redirect("./frmMainPage.aspx");
                            } // end if (this.txtUser_Password.Text.CompareTo(this.mb_objDataSet.Tables["tabUser"].Rows[i]["User_Password"].ToString()) == 0)
                        } // end if (this.txtUser_ID.Text.CompareTo(this.mb_objDataSet.Tables["tabUser"].Rows[i]["User_ID"].ToString()) == 0)
                    } // end for (int i = 0; i < this.mb_objDataSet.Tables["tabUser"].Rows.Count; i++)

                    // Customized Exception statement
                    Exception ex = new Exception();
                    ex.Data["ExtraInfo"] = "Invalid Login ID or wrong password input!";
                    throw ex;

                    //Response.Output.Write("<script language=\"javascript\" type=\"text/javascript\"> alert(\"" + "無效的賬戶名稱或口令輸入!" + "\") </script>");
                } // end if (Page.IsValid)
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        protected void scrMgr_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
        {
            if (e.Exception.Data["ExtraInfo"] != null)
            {
                this.scrMgr.AsyncPostBackErrorMessage =
                    e.Exception.Data["ExtraInfo"].ToString();
            }
            else
            {
                this.scrMgr.AsyncPostBackErrorMessage =
                    e.Exception.Message;

            }

        } // end scrMgr_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)

        private void mb_fnUpdateUserCount()
        {
            int intUser_LoginCount = 0;
            mb_objConn.pcon_sqlConnection.Open();
            mb_objSqlCmdUser = new SqlCommand("select max(User_LoginCount) from tabUser " +
                "where User_ID = '" + Session["User_ID"].ToString() + "'");
            mb_objSqlCmdUser.Connection = mb_objConn.pcon_sqlConnection;
            SqlDataReader objSqlDrUser = mb_objSqlCmdUser.ExecuteReader();

            while (objSqlDrUser.Read())
            {
                if (objSqlDrUser[0].ToString().Length > 0)
                {
                    intUser_LoginCount = Int32.Parse(objSqlDrUser[0].ToString());
                    intUser_LoginCount++;
                    break;
                } // end if (objSqlDrUser[0].ToString().Length > 0)

            } // end while (objSqlDrSupplierSProduct.Read())

            mb_objConn.pcon_sqlConnection.Close();

            //tabUser
            try
            {
                // update tabUser
                StringBuilder sbUpdateSql = new StringBuilder();
                sbUpdateSql.Append("update tabUser ");
                sbUpdateSql.Append("set ");
                sbUpdateSql.Append("User_LoginCount = " + Misc.fnstringFormatforSQLStatement(intUser_LoginCount.ToString()) + ", ");
                sbUpdateSql.Append("User_LLoginDate = " + "getdate()" + " ");
                sbUpdateSql.Append("where User_ID = '" + Misc.fnstringFormatforSQLStatement(Session["User_ID"].ToString()) + "'");

                mb_objSqlCmdUser1 = new SqlCommand();
                mb_objSqlCmdUser1.Connection = mb_objConn.pcon_sqlConnection;
                mb_objSqlCmdUser1.CommandType = CommandType.Text;
                mb_objSqlCmdUser1.CommandText = sbUpdateSql.ToString();

                mb_objConn.pcon_sqlConnection.Open();
                mb_objSqlTransaction = mb_objConn.pcon_sqlConnection.BeginTransaction(IsolationLevel.ReadCommitted, "UserUpTran");

                mb_objSqlCmdUser1.Transaction = mb_objSqlTransaction;
                mb_objSqlCmdUser1.ExecuteNonQuery();
                mb_objSqlTransaction.Commit();
            }
            catch (Exception ex)
            {
                mb_objSqlTransaction.Rollback("UserUpTran");
                throw ex;
            }

        } // end mb_fnUpdateUserCount()

        protected void btnMakeError_Click(object sender, EventArgs e)
        {
            throw new ArgumentException();
        }
    }

     Is it the bug of .NetFramework 3.5 SP1? or otherthing else?

    manpakhong@hotmail.com
    Man Pak Hong, Dave

    Analyst Programmer

     

     

     

     



Page 1 of 1 (1 items)