System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) - PullRequest
0 голосов
/ 02 апреля 2012

Я получаю следующее исключение в UserControl, Page Load.Я пытался найти это в Google, но не нашел много информации.Пожалуйста, дайте мне знать, если кто-нибудь может помочь мне с тем же.

Ситуация такова, что есть один файл ascx.cs для различных пользовательских контролей на разных языках.

Приложение работает правильно, ноэто исключение иногда генерируется.

Exception information: 
Exception type: NullReferenceException 
Exception message: Object reference not set to an instance of an object.
at SmartSoft.SmartLiveWeb.UserControls.Common.PayoutForms.BoundAccountsOfMember()
at SmartSoft.SmartLiveWeb.UserControls.Common.PayoutForms.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Запрос информации: Аутентифицировано: True Тип аутентификации: Forms Имя учетной записи потока: IIS APPPOOL \ SLC Веб-сайт

protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                /*
                if (Request.QueryString.Count > 0 && Request.QueryString["MId"] != null)
                    this.MId = int.Parse(Request.QueryString.Get("MId"));
                */

                HideAllForms();
                AddValidationAttributesToControls();
                **BoundAccountsOfMember();**
                BoundWithdrawMethods();
                /*
                 * if (IsNetentConfirmationRequired())
                    LoadNetentConfirmationForm();
                 * 
                */
                CurrentPayoutMethod = (PayoutMethodEnum)Convert.ToInt16(SessionController.GetSessionData<object>("PayoutMethod"));
            }

            PlaceHolder phWithdraw = this.FindControl("phWithdraw") as PlaceHolder;
            Panel pnlKYC = this.FindControl("pnlKYC") as Panel;

            if (SessionController.CurrentMember != null && SessionController.CurrentMember.Approved == 10)
            {
                phWithdraw.Visible = false;
                pnlKYC.Visible = true;
            }
            else
            {
                phWithdraw.Visible = true;
                pnlKYC.Visible = false;
            }
        }

Пожалуйста, найдите BoundAccountsofMemberкод метода позади.

private void BoundAccountsOfMember()
        {
            Dictionary<Int16, AccountType> accountTypes = SessionController.CurrentMember.GetAccountTypes();

            ddlWithdrawFrom.Items.Clear();
            foreach (AccountType accountType in accountTypes.Values)
            {
                ddlWithdrawFrom.Items.Add(new ListItem(accountType.AccountName, accountType.AccountId.ToString()));
            }
            ListItem li = ddlWithdrawFrom.Items.FindByValue(SessionController.DefaultAccountId.ToString());
            if (li != null)
            {
                ddlWithdrawFrom.SelectedIndex = -1;
                li.Selected = true;
            }
        }

Вышеуказанное исключение выдается из события Page_Load.С уважением Шривидхья

1 Ответ

5 голосов
/ 02 апреля 2012

Я мог бы догадаться, что у вас есть проблема с сеансом здесь. Вы проверяете SessionController.CurrentMember != null в Page_Load, но не в своем BoundAccountsOfMember.

Я считаю, что это проблема, если вы говорите, что это происходит время от времени. Возможно, вам следует поработать над обновлением / аннулированием сеанса в ваших модулях, чтобы убедиться, что ваш код не будет работать без действительного сеанса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...