#visual-studio-2010 #debugging
#visual-studio-2010 #отладка
Вопрос:
Я пишу asp.net Веб-приложение. Я написал страницу входа, которая проверяет подлинность пользователя и сохраняет их UserID
в Session["UserID"]
. Каждая страница в веб-приложении будет проверяться на наличие допустимого Session["UserID"]
. Если недопустимо, перенаправьте пользователя на экран входа в систему.
Это отлично работает, но это замедляет мою способность отлаживать каждую страницу на моем веб-сайте. Каждый раз, когда я вношу изменения в *.cs
файл, мне нужно нажать клавишу F6, чтобы перестроить мое решение. Это приводит к разрушению моего сеанса, что означает, что мне нужно вернуться к экрану входа в систему, ввести свое имя пользователя и пароль, перейти на страницу, над которой я работал, выполнить мои тесты, внести изменения в свой код и повторить.
Есть ли способ поддерживать мой сеанс в рабочем состоянии каждый раз, когда я перестраиваю свое решение, чтобы мне не приходилось каждый раз переходить на страницу входа в систему?
Ответ №1:
К сожалению, я не знаю, найдете ли вы какой-либо способ обойти это ограничение. Каждый раз, когда вы создаете свой проект, вы собираетесь запускать перезапуск веб-приложения. Даже если бы вы использовали постоянное хранилище для хранения сеансов, вы потеряете файл cookie сеанса, установленный в вашем браузере.
Вы могли бы добавить в свое приложение функцию «запомнить меня». Вам нужно будет выполнить небольшую повторную реализацию, чтобы сохранить информацию о текущей аутентификации пользователя в хранилище данных, которое менее изменчиво, чем ASP.NET состояние сеанса. Кроме того, вы бы сохранили индекс к этой информации в файле cookie, который является более постоянным, чем файл cookie сеанса.
Это лучшее, что я могу придумать, или, по крайней мере, это лучшее, что я могу придумать без каких-либо существенных расширений .Поставщики сетевой безопасности. Однако отнеситесь к этому с недоверием — я никогда раньше не пытался решить эту конкретную проблему и вряд ли считаю себя экспертом во всех вопросах ASP.NET связано с сеансом.
Ответ №2:
Причина, по которой вы теряете сеанс, заключается в том, что ваше приложение перезапускается при записи в папку приложения. Фактически то же самое происходит при публикации вашего приложения, каждый пользователь, вошедший в систему в данный момент, потеряет свой сеанс.
Это сделано намеренно, потому что у них нет возможности узнать, есть ли библиотеки DLL, которые вы использовали на своей странице, все еще там или нет. Поэтому вместо этого они сами отслеживают папки и запускают перезапуск при записи в них.
Для этого нет обходного пути. На самом деле это функция, которая экономит ваше время (большую часть времени), представьте, что вы отслеживаете ошибки повреждения памяти, потому что указатели перемещались в вашем коде!