سؤال

وأنا غير قادر على معرفة كيفية استخدام أسلوب Profile.GetProfile() في فئة المكتبة. حاولت استخدام هذا الأسلوب في Page.aspx.cs وانها عملت تماما.

وكيف يمكنني أن أجعل الأسلوب الذي يعمل في page.aspx.cs، والعمل في مكتبة الفئة.

هل كانت مفيدة؟

المحلول

في ASP.NET، الملف هو ربط إلى في HttpContext.Current.Profile الملكية، والتي ترجع كائن ديناميكيا من نوع ProfileCommon، والمستمدة من <لأ href =" http://msdn.microsoft.com/en-us/library/system.web. profile.profilebase.aspx "يختلط =" نوفولو noreferrer "> System.Web.Profile.ProfileBase .

على ما يبدو يشمل

وProfileCommon على (اسم المستخدم سلسلة) طريقة GetProfile، ولكنك لن تجد وثقت رسميا في MSDN (وانها لن تظهر في التحسس في الاستوديو المرئي) لأن معظم الطبقة ProfileCommon تم إنشاؤه بشكل حيوي عند تطبيق ASP.NET الخاص بك يتم تصنيف (إن القائمة الدقيقة لخصائص وأساليب تعتمد على الطريقة التي يتم تكوينها في الملف web.config الخاصة بك "أوضاع"). GetProfile () لا تحصل على إشارة في هذا MSDN الصفحة، لذلك يبدو أن تكون حقيقية.

وربما في الصف المكتبة الخاصة بك، والمشكلة هي أن المعلومات التكوين من الملف web.config لا يتم انتقاؤها. هل لديك الدرجة جزء من مكتبة Solultion يتضمن تطبيق ويب، أم أنك مجرد العمل على مكتبة في العزلة؟

نصائح أخرى

هل حاولت مضيفا إشارة إلى System.Web.dll إلى مكتبة صفك ثم:

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

ويمكنك استخدام ProfileBase، ولكن تفقد نوع السلامة. يمكنك تخفيف ذلك مع صب الدقيق ومعالجة الأخطاء.

    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);
                }
            }        
        }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top