comment utiliser Profile.GetProfile () dans une classe de bibliothèque?

Je n’arrive pas à comprendre comment utiliser la méthode Profile.GetProfile() dans une classe de bibliothèque. J’ai essayé d’utiliser cette méthode dans un fichier Page.aspx.cs et cela a parfaitement fonctionné.

Comment puis-je faire une méthode qui fonctionne dans la page.aspx.cs, fonctionne dans la bibliothèque de classes.

Dans ASP.NET, Profile est un raccordement à la propriété HttpContext.Current.Profile , qui renvoie un object généré de manière dynamic de type ProfileCommon, dérivé de System.Web.Profile.ProfileBase .

ProfileCommon inclut apparemment une méthode GetProfile (ssortingng username), mais vous ne la trouverez pas documentée officiellement dans MSDN (et elle ne s’affichera pas dans intellisense dans Visual Studio) car la plupart de la classe ProfileCommon est générée dynamicment lors de la compilation de votre application ASP.NET ( La liste exacte des propriétés et des méthodes dépendra de la configuration des “profils” dans votre web.config). GetProfile () reçoit une mention sur cette page MSDN , donc elle semble être réelle.

Peut-être que dans votre classe de bibliothèque, le problème est que les informations de configuration de web.config ne sont pas collectées. Votre classe de bibliothèque fait-elle partie d’une solution comprenant une application Web ou travaillez-vous simplement sur la bibliothèque de manière isolée?

Avez-vous essayé d’append une référence à System.Web.dll à votre bibliothèque de classes puis:

 if (HttpContext.Current == null) { throw new Exception("HttpContext was not defined"); } var profile = HttpContext.Current.Profile; // Do something with the profile 

Vous pouvez utiliser ProfileBase, mais vous perdez la sécurité de type. Vous pouvez atténuer cela avec une conversion soigneuse et une gestion des erreurs.

  ssortingng user = "Steve"; // The username you are trying to get the profile for. bool isAuthenticated = false; MembershipUser mu = Membership.GetUser(user); if (mu != null) { // User exists - Try to load profile ProfileBase pb = ProfileBase.Create(user, isAuthenticated); if (pb != null) { // Profile loaded - Try to access profile data element. // ProfileBase stores data as objects in a Dictionary // so you have to cast and check that the cast succeeds. ssortingng myData = (ssortingng)pb["MyKey"]; if (!ssortingng.IsNullOrWhiteSpace(myData)) { // Woo-hoo - We're in data city, baby! Console.WriteLine("Is this your card? " + myData); } } }