Frage

Ich kann nicht herausfinden, wie Profile.GetProfile() Methode in einer Bibliothek-Klasse zu verwenden. Ich habe versucht, diese Methode in einer Page.aspx.cs verwenden und es funktionierte perfekt.

Wie kann ich eine Methode machen, die in dem page.aspx.cs, die Arbeit in der Klassenbibliothek arbeitet.

War es hilfreich?

Lösung

In ASP.NET-Profil ist ein Haken in die HttpContext.Current.Profile Eigenschaft, die ein dynamisch erzeugte Objekt vom Typ Zu, abgeleitet von System.Web.Profile.ProfileBase .

Profile enthält offenbar einen GetProfile (string username) -Methode, aber Sie werden es nicht offiziell in MSDN dokumentiert (und es zeigen wird nicht in IntelliSense in Visual Studio nach oben), weil die meisten der Profile Klasse dynamisch erzeugt wird, wenn die ASP.NET-Anwendung kompiliert wird (Die genaue Liste der Eigenschaften und Methoden wird davon abhängen, wie ‚Profile‘ sind in Ihrer web.config konfiguriert). GetProfile () bekommt eine Erwähnung auf dieser MSDN , so scheint es wirklich zu sein.

Vielleicht in Ihrer Bibliothek Klasse, das Problem ist, dass die Konfiguration Infos von web.config aufgenommen werden, nicht zu werden. Ist Ihre Bibliothek Klasse Teil eines Solultion, die eine Web-Anwendung enthält, oder arbeiten Sie gerade auf der Bibliothek isoliert?

Andere Tipps

Haben Sie versucht, das Hinzufügen Verweis auf Ihre Klassenbibliothek System.Web.dll und dann:

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

Sie können mit Profilen, aber Sie Typsicherheit verlieren. Sie können, dass bei sorgfältiger Gießen und Fehlerbehandlung verringern.

    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);
                }
            }        
        }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top