Как можно получить точку останова на странице_Load NOT?
У меня есть точка останова на странице Page_Load, которая никогда не попадает. Нет предупреждений или сообщений, указывающих, что точка останова никогда не пострадает, ее просто не ударяют, даже если страница загружена успешно.
После успешного входа в систему пользователь перенаправляется на эту страницу, используя свойство DestinationPageUrl элемента управления. Как упоминалось выше, я могу войти и перейти на эту страницу, так что, по крайней мере, эта часть работает.
Если я установил точку останова в событии Page_Load на странице входа (просто старое приложение веб-приложения ASP.NET для примера здесь), точка останова будет удалена. Я могу войти в код, но событие page_load никогда не попадает, и страница просто появляется. В этой последовательности я просматриваю события page_load для login.aspx и site.master, но не page_load, которые я действительно хочу видеть.
Любые предложения? Спасибо!
Ответы
Ответ 1
Несколько возможных ответов здесь:
Ответ 2
Чтобы выполнить выполнение Page_Load, должно выполняться одно из следующих условий:
-
У вас должен быть AutoEventWireup = "true" в директиве @Page на странице aspx.
-
Обработчик событий должен быть явно подключен, обычно в OnInit
UPDATE
Как указано в комментарии @bzlm, значение по умолчанию для AutoEventWireup "истинно", поэтому на самом деле оно будет выполнено также, если атрибут AutoEventWireup отсутствует в директиве страницы.
Старые версии Visual Studio (2003, конечно, и, возможно, 2005) использовали явно события подключения и рекомендуют устанавливать AutoEventWireup на false.
Из того, что я вижу, я больше не думаю, что это правда. Явный провод был выполнен с помощью строки:
this.Load += new System.EventHandler(this.Page_Load);
в методе InitializeComponent, который был сгенерирован конструктором и вызван из метода OnInit
.
Ответ 3
если у вас есть AutoEventWireup = "false" в директиве <% @Page% > , метод Page_Load не будет прикреплен к событию Page.Load.
Ответ 4
У меня было такое поведение в веб-приложении VB.
После Protected Sub Page_Load(sender As Object, e As EventArgs)
не было Handles
. Я добавил Handles Me.Load
и работал с AutoEventWireup="false"
.
Настройка AutoEventWireup="true"
также работала, как указано выше.
Ответ 5
У меня была такая же проблема, но ни один из ответов здесь не помог мне. Я понимаю, что многие проблемы могут дать эту же проблему. Поэтому я даю свое решение, когда у других такая же проблема. Я знал, что могу установить AutoEventWireup в true. Я хотел знать, как заставить его работать, когда AutoEventWireup является ложным.. на С#. Я знал, что в VB я могу просто добавить предложение "Ручки".
Картинка стоит тысячи слов, и это пример кода, поэтому здесь мой фрагмент кода:
public partial class Login : System.Web.UI.Page
{
protected override void OnInit(EventArgs e) // i added this method.
{
Load += new EventHandler(Page_Load);
base.OnInit(e);
}
protected void Page_Load(object sender, EventArgs e)
{ // code for the Page Load event here
}
}
Ответ 6
Хорошо, возможно, что VS может быть ошибкой в то время (это случилось для меня), но я никогда не получаю это последовательно.
Вы упомянули о перенаправлении; если перенаправление происходит во время Page Init, событие Load никогда не будет вызываться, если запрос завершится. Это может быть одной из причин.
НТН.
Ответ 7
Возможно, что отладочные символы (*.pdb файлы) для этого конкретного события Page_Load не были созданы.
Попробуйте очистить свое решение и убедитесь, что вы находитесь в режиме отладки, а затем сделайте простое изменение в файле web.config(новая строка сделает), чтобы заставить ASP.NET перекомпилировать.
Ответ 8
Изменение VS от отладки до режима Release работало для меня.... Не знаю, почему это сработало, любой эксперт может предложить
Ответ 9
Решение довольно просто в моем случае.
Проверьте Директиву по странице:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1_Delete.WebForm1" %>
Проблема с моим кодом отсутствовала в атрибутах codebehind и .