2017-02-08 2 views
0

привет. Я так стараюсь для этого, я не могу понять большинство вопросов, так как это моя первая разработка в ASP.NET, вот моя проблема.
Im объявить переменную сеанса, когда пользователь нажимает представить на странице авторизации перенаправлять их somepage.aspxasp.net C# - настройка сеанса, а затем перенаправление пользователей через global.asax

if (dt.Rows.Count > 0) 
{ 
    Session["usersId"] = usersId; 
    Session["usersLevel"] = usersLevel; 
    Session["usersRegion"] = usersRegion; 
    Session["notification"] = ""; 
    Response.Redirect("pages/Dashboard.aspx"); 
} 

Таким образом, после того что я положил что-то в моем Web.config

<system.web> 
    <compilation debug="true" targetFramework="4.0"/> 
    <sessionState timeout = "1" mode = "InProc" /> 
    </system.web> 

Так конечно сессия истекает?/timeout? то в моем Global.asax я поставил этот

void Session_End(object sender, EventArgs e) 
{ 

    Response.Redirect("Login.aspx"); 

} 

Однако HttpExeception поднимается, что говорит

Ответ не доступен в этом контексте.

Почему ответ не доступен? когда он сказал, что режим sessionstate должен быть установлен в InProc? Я просто хочу, чтобы пользователь будет перенаправлен на этой странице, когда сессия истекает/тайм-аут (я не знаю их различие, но выглядит так же для меня)

спасибо

+0

Попробуйте использовать 'HttpContext.Current.Response.Redirect' вместо' Response.Redirect' в 'Session_End' метод для перенаправления на страницу входа. –

+0

@TetsuyaYamamoto нет, что не сработает. Ответ на это событие отсутствует, потому что он не вызван запросом. – mason

+0

Вы не перенаправляете пользователей на страницу входа, когда страница истекает, по крайней мере, не с сервера. В следующий раз, когда они сделают запрос, вы можете перенаправить их, если хотите, потому что это будет в контексте запроса/ответа. Или вы можете попытаться отслеживать на стороне клиента JavaScript, если их сеанс активен или нет, но это, как правило, становится беспорядочным. – mason

ответ

0

Вы можете рассмотреть, чтобы сделать редирект AuthenticateRequest события. Только провайдер sessionState inProc поддерживает событие окончания сеанса, и это может произойти в любое время (даже после ответа соответствующего запроса, поэтому вы видели это исключение).

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