2009-10-08 5 views
3

Je souhaite définir un cookie avec le fuseau horaire d'un utilisateur lors de sa connexion. AccountController.LogOn() semble être le meilleur endroit pour cela. Cependant, je ne peux pas encore lire le profil d'un utilisateur car je suppose que vous n'avez accès aux profils que lorsque la méthode est terminée. Ainsi, ce code renvoie une chaîne vide:Comment obtenir le profil d'un autre utilisateur dans ASP.NET MVC?

Dim timeZone = HttpContext.Profile("TZ").ToString 

Une fois qu'un utilisateur a entièrement connecté, le code ci-dessus renvoie le décalage horaire correct.

Une solution est de lire le profil du nom d'utilisateur tente de se connecter dans AccountController.LogOn():

ProfileCommon profile = Profile.GetProfile(username); // FAILS 

Cependant, cela ne fonctionne pas. Alors, comment lire le profil d'un utilisateur donné s'il n'est pas connecté?

+0

Comment Profile.GetProfile échoue-t-il? Quelle est l'exception? –

+0

Profile.GetProfile() ne semble pas exister pour les applications MVC. – royco

Répondre

8

ceci ne peuvent sembler évidentes mais est un get profil:

ProfileBase profile = ProfileBase.Create(HttpContext.Profile.UserName, true); 

renvoie une instance existante.

+0

Merci. J'étais au courant de ProfileBase.Create(), mais je pensais qu'il a créé de nouveaux profils pour les utilisateurs qui n'en avaient pas. – royco

1

En plus de la réponse de Mathias, vous pouvez ensuite coulé à votre profil typé:

ProfileCommon profile = (ProfileCommon)ProfileBase.Create(username, true); 

De plus, la documentation est ProfileBase.Create sur MSDN.

+0

Merci pour ça. – royco

Questions connexes