Question

Je ne vois pas 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 créer une méthode qui fonctionne dans le fichier page.aspx.cs, dans la bibliothèque de classes.

Était-ce utile?

La solution

Dans ASP.NET, Profile est un point d'ancrage dans HttpContext.Current.Profile ", qui renvoie un objet généré dynamiquement de type ProfileCommon, dérivé de System.Web.Profile.ProfileBase .

ProfileCommon inclut apparemment une méthode GetProfile (string 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 de manière dynamique lorsque votre application ASP.NET est compilé (la liste exacte des propriétés et méthodes dépendra de la configuration des "profils" dans votre web.config). GetProfile () reçoit une mention sur ce MSDN page , cela semble donc réel.

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?

Autres conseils

Avez-vous essayé d'ajouter une référence à System.Web.dll dans 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 un casting et une gestion des erreurs soignés.

    string 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.

                string myData = (string)pb["MyKey"];

                if (!string.IsNullOrWhiteSpace(myData))            
                {
                    // Woo-hoo - We're in data city, baby!
                    Console.WriteLine("Is this your card? " + myData);
                }
            }        
        }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top