Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πρόβλημα με session

Îåêßíçóå áðü ôï ìÝëïò arish. Τελευταία δημοσίευση από το μέλος arish στις 18-08-2007, 12:29. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  17-08-2007, 16:54 34357

    Πρόβλημα με session

    Καλησπέρα. Προσπαθώ να φτιάξω ενα project με asp.net και έχω κολλήσει σε ένα θεματάκι με το Session κ το UserId του χρήστη. Χρησιμοποιώ την default db που κατασκευάζει το asp.net για το authentiacation.

    Θέλω λοιπον να αποθηκεύω στο Session το UserId (uniqueidentifier) του χρήστη μόλις κάνει login για εκτελώ κάποια queries στη συνέχεια. Το πρόβλημα είναι ότι αν κάνω συνεχόμενα logins και logouts δεν γράφεται πάντα η τιμη στο Session και μερικές φορές μένει Null και πετάει Exception. Παραθέτω τον κώδικα που χρησιμοποιώ:

    στο login control εχω προσθέσει στο LoggedIn Event το εξής:

    protected void Login1_LoggedIn(object sender, EventArgs e)
        {
            string connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

            string sql =
            "SELECT top 1 UserId FROM aspnet_Users WHERE UserName = '" + User.Identity.Name.ToString() + "'";
            using (SqlConnection conn = new SqlConnection(connString))
            {
                SqlCommand cmd = new SqlCommand(sql, conn);
                try
                {
                    conn.Open();
                    string userIdentifier = cmd.ExecuteScalar().ToString();
                    Session.Add("userId", userIdentifier);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    conn.Close();
                }
            }
        }

    ενώ για να πάρω την τιμή από το Session:

    string userIdentity = Session.Contents["userId"].ToString();

    το οποίο πετάει NullValueException (ή κατι τέτοιο..)

    Και τέλος στο logout γράφω το εξής:

    protected void LoginStatus1_LoggingOut(object sender, LoginCancelEventArgs e)
        {
            Session.Remove("userId");
        }



    Πραγματικά παρακαλώ για οποιαδήποτε βοηθεια γιαιτ είναι λίγο επείγον το θε΄μα απο αποψη χρονου
  •  18-08-2007, 11:16 34360 σε απάντηση της 34357

    Απ: Πρόβλημα με session

    Δεν χρειάζεται να το αποθηκεύεις στο session. Στο δίνει έτοιμο ο μηχανισμός του membership με

    Membership.GetUser.ProviderUserKey


    αν θες μπορείς να το βάλεις και σε μια κλάση από την οποία θα κληρονομούν οι σελίδες σου και θα το έχεις έτοιμο.πχ:

    ReadOnly Property userId() As Guid
    Get
    Return (Membership.GetUser.ProviderUserKey)
    End Get
    End Property

  •  18-08-2007, 12:29 34361 σε απάντηση της 34360

    Απ: Πρόβλημα με session

    Ευχαριστώ πάρα πολύ. Πραγματικά βοήθησες πολύ!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems