2013-04-05 2 views
0

Быстрый проект, с которым меня попросили сбить, не нуждается в сумасшедшей безопасности, поэтому я внедрил простой экран входа в систему, который проверяет имя пользователя & PW против дБ.Сессионная переменная теряется после публикации (работает на dev-машине)

User u = new User(); 
if (u.AuthenticateUser(txtUsername.Text, txtPassword.Text)) 
    Session.Add("UserSeshAuthenticated", true);      

Response.Redirect("Dashboard.aspx"); 

Все остальные страницы разделяют MasterPage и в Page_Load мероприятия:

if ((Session["UserSeshAuthenticated"] == null) || ((bool)Session["UserSeshAuthenticated"] == false)) 
     { 
      fw.Write("UserSeshAuthenticated has been lost or something"); 

      string path = HttpContext.Current.Request.Url.AbsolutePath; 
      Response.Redirect("Login.aspx?retpath=" + path); 
     } 
     else 
     { 
      lblLoggedInUsername.Text = Session["UserSeshAuthenticated"].ToString(); 
     } 

Это все работает очень хорошо на моей машине развития, но когда я опубликовал его на мой сервер, на время загрузки моего MasterPage, оно потеряло переменные сеанса.

Может ли кто-нибудь помочь? ... Я должен жить этим днем ​​& Я не думал, что столкнулся с этой проблемой !!!

Любая помощь приветствуется. Большое спасибо.

+0

На сервере это приложение работает в корне сервера? Если он запущен в папке, это папка, настроенная как приложение/пакет, в IIS? – tgolisch

+0

Приложение работает как приложение, но не в корне сервера ... Он работает под приложением внутри другого приложения внутри DefaultWebSite. IIS> Сайты> Веб-сайт по умолчанию> App1> MyProblemApp – wotney

+0

Это не в веб-ферме или балансировочной системе, не так ли? – tgolisch

ответ

0

В вашем коде для входа в сеанс вы добавляете «UserSeshAuthenticated», но не объект User. Если функция u.AuthenticateUser() добавляет в сеанс свою копию, это может быть вашей проблемой. Попробуйте добавить это в свой блок результатов. Например:

User u = new User(); 
if (u.AuthenticateUser(txtUsername.Text, txtPassword.Text)) 
{ 
    Session.Add("UserSeshAuthenticated", true); 
    Session.Add("oUser", u); 

    Response.Redirect("Dashboard.aspx"); 
} 
+0

Привет, tgolisch, Спасибо, что постарался помочь. Не беспокойтесь об этом объекте пользователя, это не проблема. Это факт, что сеанс полностью потерян. Я удалил ненужные строки кода. – wotney

+0

Просто для подтверждения: вы обнаруживаете, что сеанс потерян, потому что после входа в систему вы возвращаетесь обратно на страницу login.aspx. Верный? ... о, также, вы заметили, что ваш Response.Redirect произойдет, если логин завершился успешно или нет? (Я обновил свой пример кода, чтобы показать изменение, которое вы, возможно, захотите попробовать) – tgolisch

+0

Функция u.AuthenticateUser ничего не делает для сеанса .... Я попытался добавить весь пользовательский объект к сеансу, он не изменился .... Я обнаруживаю/отлаживаю потерю переменной сеанса, записывая в текстовый файл с ключевыми интервалами и анализируя потом ..... Также «вы заметили, что ваш Response.Redirect произойдет, будет ли вход успешно или нет?» Нет, я этого не заметил, что случилось с моим заявлением IF? – wotney

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