2009-02-08 2 views
1

Есть ли какие-либо другие аргументы, кроме того, что параметр timeout в web.config не используется? Это может быть тайм-аут по умолчанию 30 минут, но это определенно менее 30 минут.Членство в ASP.NET - время пользователя раньше, чем ожидалось

 <authentication mode="Forms"> 
     <forms timeout="50000000" loginUrl="content/login.aspx"/> 
    </authentication> 

И для кода позади на моей странице Login.aspx:

protected void LoginButton_Click(object sender, EventArgs e) 
{ 
    if (Membership.ValidateUser(UserName.Text, Password.Text)) 
    { 
     FormsAuthentication.RedirectFromLoginPage(UserName.Text, RememberMe.Checked); 
    } 
    else 
    { 
     FailureText.Text = "<br/>Login Failed. Please try again"; 
    } 

} 

[Редактировать]

Я считаю, что тайм-аут происходит около 10 минут безделья ..

+0

я с подобной проблемой. Мой сайт работает нормально локально, но на веб-хостинге билет на авторизацию истекает примерно через час. Вы когда-нибудь видели эту проблему? – codette

+0

Помогает ли это? http://stackoverflow.com/questions/481416/asp-net-membership-issues-with-registration – juan

ответ

2

Аутентификация аутентификации ASP.NET может быть задана в файле web.config (как вы указали в своем вопросе), однако это также можно установить в коде. У вас есть какие-либо области вашего кода на C#, которые явно задают значение тайм-аута форм? Если это так, параметр в коде переопределит настройку web.config.

Другой возможностью является использование cookie с аутентификацией форм, созданных с помощью кода. Это обычно делается, снова в коде C#, с чем-то вроде следующего:

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                  name, 
                  isPersistent, 
                  expirationTime); 

Если создать специальную FormsAuthenticationTicket с настройкой таймаута (например) 60 минут, в то время как ваша установка web.config указывает 30 минут, билет, установленный внутри кода, переопределит настройку web.config.

Обратите внимание, что значения сеанса ASP.NET и значения тайм-аута сеанса IIS не должны влиять на тайм-ауты проверки подлинности вашей формы.

Конечно, в качестве последней возможности, поскольку проверка подлинности форм обычно основана на клиентском cookie, возможно, что пользователь может очистить или удалить файл cookie. Это, конечно же, приведет к тому, что пользователь не будет аутентифицирован на вашем веб-сайте.

Просьба также посмотреть на this post от Скотта Форсайт на веб-сайте weblogs.asp.net, в котором подробно изложены эти проблемы.

+0

Да, я посмотрел ту ссылку, которую вы мне прислали, поэтому я отправил свой код, который не генерирует собственный билет. – TimLeung

+0

Это также происходит и со мной. – TimLeung

+0

Из небольшого фрагмента, опубликованного вами, не совсем ясно, что вы не устанавливаете билет формы или значение таймаута вручную с помощью кода. Однако, если вы этого не делаете, я не могу придумать другую причину, кроме тех, что я упомянул в своем посте, что приведет к таймауту через 10 минут. – CraigTP

1

Вероятно связанные с таймаутом сеанса, вы можете изменить тайм-аут сеанса пользователей в web.config, в разделе system.web добавить:

<sessionState timeout="x minutes" /> 
Смежные вопросы