2012-04-02 3 views
0

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

Ситуация в том, что существует один файл 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 Type Authentication: Формы имя учетной записи Тема: 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. С уважением Srividhya

ответ

5

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

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

Смежные вопросы