0

ASP.NET 4 でセッション タイムアウトを機能させるのに問題があります。タイムアウトを 720 分 (12 時間) に設定しています。フォーム認証を使用しています。タイムアウトの設定に関係なく、約 20 分後にタイムアウトが発生します。何か間違った設定をしたことは確かですが、何が原因かわかりません。いくつかの修正 (ヘッダーなど) をオンラインで調べましたが、何も機能しないようです。構成ファイルは次のとおりです。

<authentication mode="Forms">
     <forms loginUrl="~/Login.aspx" name="CAFormsAuth" timeout="720" slidingExpiration="true" defaultUrl="Default.aspx" /> </authentication> <authorization>    <!--<allow users="*"/>-->   <deny users="?" /> </authorization>

ログインコードは次のとおりです。

try
        {
            string adLogin = txtUserName.Text;

            bool isValid = false;
            //Validate User against AD First...
            //----------------------------------
            try
            {
                isValid = AuthenticateUser(cboDomains.Text, adLogin, txtPassword.Text);
            }
            catch (Exception ex)
            {
                //Should read "Invalid Username or Password"...
                //lblError.Text = ex.Message;
                lblError.Text = "Invalid User Name or Password.";
                return;                   
            }

            //Now, See if the user exists in the database.
            //---------------------------------------------
            db_users user = null;
            try
            {
                user = usrHelp.GetUserByADUserName(cboDomains.Text + @"\" + adLogin);

                if (user == null)
                {
                    lblError.Text = "User " + adLogin + " does not exist in the database.";
                    return;
                }
            }
            catch (Exception ex)
            {
                ErrorLoggingHelper.LogToSource(Globals.ApplicationName, ex.ToString(), System.Diagnostics.EventLogEntryType.Error);

                lblError.Text = "User " + adLogin + " does not exist in the database.";
                return;
            }

            if (isValid)
            {
                if (chkRemember.Checked)
                {
                    SetCookies();
                }
                else
                {
                    RemoveCookie();
                }
            }
            else
            {
                lblError.Text = "Password is not valid";
                Telerik.Web.UI.RadAjaxManager.GetCurrent(this.Page).ResponseScripts.Add(String.Format("SetFocus('{0}')", txtPassword.ClientID));
                return;
            }

            Session[Globals.LoggedInUserName] = txtUserName.Text;
            Session[Globals.LoggedInUserId] = user.user_id;
            Session["CurrentUser"] = user;

            FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false);

        }
        catch (Exception ex)
        {
           //deleted error logging code here...
            lblError.Text = "Error authenticating user. Please contact the administrator.";
        }
4

2 に答える 2

2

IIS 内には、アプリケーション プール レベルの高度な設定があります。「プロセス モード」の下に「アイドル タイムアウト」設定があり、デフォルト設定は 20 分です。そこで変更できるはずです。

于 2012-07-30T21:46:45.990 に答える
0

次のように web.config でセッション タイムアウトを設定してみてください。

<configuration>
  <system.web>
    <sessionState mode="InProc" timeout="720" />
  </system.web>
</configuration>
于 2012-07-30T21:44:09.670 に答える