Получение исключения во время выполнения при добавлении пользовательского элемента управления на страницу, но ошибок компилятора нет

#c# #.net #asp.net #exception

#c# #.net #asp.net #исключение

Вопрос:

Было выдано исключение типа ‘System.Web.HttpUnhandledException’.

 Step into: Stepping over non-user code 'System.Web.UI.Control.OnLoad'
Step into: Stepping over non-user code 'System.Web.UI.Control.LoadRecursive'
Step into: Stepping over non-user code 'System.Web.UI.Control.LoadRecursive'
Step into: Stepping over non-user code 'System.Web.UI.Control.LoadRecursive'
Step into: Stepping over non-user code 'System.Web.UI.Page.ProcessRequestMain'
Step into: Stepping over non-user code 'System.Web.UI.Page.ProcessRequest'
Step into: Stepping over non-user code 'System.Web.UI.Page.ProcessRequest'
Step into: Stepping over non-user code 'System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute'
Step into: Stepping over non-user code 'System.Web.HttpApplication.ExecuteStep'
A first chance exception of type 'System.NullReferenceException' occurred in App_Code.2x2ldwnl.dll
A first chance exception of type 'System.Exception' occurred in App_Code.2x2ldwnl.dll
A first chance exception of type 'System.ServiceModel.CommunicationException' occurred in mscorlib.dll
A first chance exception of type 'System.NullReferenceException' occurred in App_Code.2x2ldwnl.dll
A first chance exception of type 'System.Exception' occurred in App_Code.2x2ldwnl.dll
  

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

Код пользовательского элемента управления:

 Call Function
protected void DisplaySendMessageQuestion(string title, int messageType)
{
    UCResetPasswordDisplay.SetVisible(true);
    UCResetPasswordDisplay.MessageType = messageType.ToString();
    UCResetPasswordDisplay.Title = title;
}
  

Пользовательский элемент управления aspx.cs

 public partial class UserControls__ResetPasswordPopup : System.Web.UI.UserControl
{
    public event EventHandler YesResetClick;
    public event EventHandler NoResetClick;


protected void Page_Load(object sender, EventArgs e)
{
    PnlAddConfirmation.CssClass = "PanelResetPass";
    PnlAddConfirmation.CssClass = "PanelYesNoCore";
    txtUsername.Focus();
}

public string MessageType
{
    get { return this.lblMessageType.Text; }
    set { this.lblMessageType.Text = value; }
}

public string UserData
{
    get { return this.txtUsername.Text; }
    set { this.txtUsername.Text = value; }
}

public string Title
{
    get { return this.lblEventTitle.Text; }
    set { this.lblEventTitle.Text = value; }
}

public bool IsVisible
{
    get { return this.PnlAddConfirmation.Visible; }
    set { this.PnlAddConfirmation.Visible = value; }
}

public string ErrorMessage
{
    get { return this.LblEventNotification.Text; }
    set { this.LblEventNotification.Text = value; }
}

public void SetVisible(bool Visible)
{
    PnlAddConfirmation.Visible = Visible;
  //  PnlScreenCover.Visible = Visible;
}

protected void ChangePasswordButton_Click(object sender, EventArgs e)
{
    if (YesResetClick != null)
    {
        YesResetClick(this, EventArgs.Empty);
    }
}
protected void ImgBtnCancel_Click(object sender, EventArgs e)
{
    if (NoResetClick != null)
    {
          NoResetClick(this, EventArgs.Empty);
        }
    }
}
  

Комментарии:

1. Публикация кода поможет. Могу я спросить, на каком этапе жизненного цикла страницы вы добавляете элемент управления?

2. что находится в вашем Usercontrol? похоже, содержимое Usercontrol приводит к ошибке

3. Компилятор будет перехватывать только ошибки во время компиляции, а не ошибки во время выполнения.

4. Bump добавил код, все, что я хочу сделать, это вернуть ввод из одного текстового поля обратно на страницу, которая вызывает Usercontrol, но я даже не могу загрузить usercontrol.

Ответ №1:

На основе опубликованного вами кода — одно из следующих значений должно быть истинным:

  • PnlAddConfirmation равно null
  • txtUsername равно null

Поскольку NullReferenceException он генерируется в методе OnLoad — и, следовательно, обработчик Page_Load вашего элемента управления.

Единственное, что вы можете сделать, это включить break для всех исключений в VS — Откройте меню: Debug -> Исключения. В диалоговом окне, которое показано (ниже), убедитесь, что флажок «Выброшен» установлен.

Конфигурация исключений

При подключенном отладчике вы должны быть отправлены непосредственно в строку кода, где возникает ошибка. Убедитесь, что ваш web.config <compilation mode="debug"> также установлен, иначе у вас не будет необходимых символов для правильной работы.

Ответ №2:

Это был элемент управления валидатора, указывающий на проверку измененного имени текстового поля. даже в режиме отладки, как вы предположили, отладчик не заметил этого. Я перенес все это в чистый проект, и отладчик, наконец, заметил это.

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