07. august 2008 - 22:42Der er
3 kommentarer og 1 løsning
Problemer med Authentication i .net 2.0
Hej med jer Jeg har brugt det indbyggede authentication-system som er i .net 2.0 til et website. Login skal kunne lade sig gøre gennem webservices, og jeg vil gerne have at metoden returnerer brugeres userkey, og har der derfor følgende kode:
[WebMethod] public string LogIn(string UserName, string Password) { FormsAuthentication.SignOut(); //Start by logging out of security reasons - removes cookie
if (Membership.ValidateUser(UserName, Password)) { FormsAuthentication.SetAuthCookie(UserName, false);
MembershipUser u; u = Membership.GetUser(); return u.ProviderUserKey.ToString(); } else ...
Dette virker bare ikke. Jeg får fejlen:
System.NullReferenceException: Object reference not set to an instance of an object. at Authentication.LogIn(String UserName, String Password)
Hvis jeg allerede er logget ind, men forsøger at logge ind en gang til, så kommer der ingen fejl.
Er der nogen som kan gennemskue hvordan dette fikses??
nu skriver du jo ikke om din login-metode er en del af den page, der skal håndtere login eller om du har placeret metoden i en ekstern class, men det kunne godt se ud som om det var det sidste eftersom du for en null-exception. Hvis metoden er en del af en ekstern class kan du kun kalde den via en instance af den class, eller også kan du lave den metode static.
Enten: Authentication auth = new Authentication(); auth.LogIn(String UserName, String Password);
Eller ændre metode til: public static string LogIn(string UserName, string Password)
...men det er lidt svært at vide at vide da det ser ud som om det er din brug af metoden der går galt og ikke metoden i sig selv. Hvis det ikke virker så prøv at skriv din kode hvor du gør brug af metoden.
Jeg får jo kun en exception hvis jeg ikke er logget ind i forvejen. ER jeg derimod logget ind bliver userkey returneret som ønsket. Derfor tror jeg snarere, at Membership.GetUser(); bliver kaldt på et tidspunkt hvor brugeren ikke er authenticated. Jeg ved ikke hvordan den metode er implementeret. Som sagt gør jeg bare brug af det indbyggede system.
eftersom det er din LogIn(string UserName, string Password) den crasher på så må du jo også eksekvere den et sted. Kan du ikke vise koden fra hvor det bliver gjort?
Men som tak for indsatsen får du pointsene alligevel... :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.