asp.net — поддерживать сеанс во время отладки и перестройки решения?

#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, которые вы использовали на своей странице, все еще там или нет. Поэтому вместо этого они сами отслеживают папки и запускают перезапуск при записи в них.

Для этого нет обходного пути. На самом деле это функция, которая экономит ваше время (большую часть времени), представьте, что вы отслеживаете ошибки повреждения памяти, потому что указатели перемещались в вашем коде!