ProfileManager.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / xsp / System / Web / Profile / ProfileManager.cs / 1 / ProfileManager.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 
/*
 * ProfileManager 
 * 
 * Copyright (c) 2002 Microsoft Corporation
 */ 

namespace System.Web.Profile
{
    using  System.Security.Principal; 
    using  System.Security.Permissions;
    using  System.Collections; 
    using  System.Collections.Specialized; 
    using  System.Web.Configuration;
    using  System.Web.Util; 
    using  System.Web.Security;
    using  System.Web.Compilation;
    using  System.Configuration;
    using  System.Configuration.Provider; 
    using  System.Reflection;
    using  System.CodeDom; 
    using System.Web.Hosting; 

    [AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] 
    public static class ProfileManager
    {

        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        public static bool DeleteProfile(string username) 
        {
            SecUtility.CheckParameter( ref username, true, true, true, 0, "username" ); 
            return (Provider.DeleteProfiles(new string [] {username}) != 0);
        }

        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        public static int DeleteProfiles(ProfileInfoCollection profiles) 
        {
            if( profiles == null ) 
            {
                throw new ArgumentNullException( "profiles" );
            }
 
            if ( profiles.Count < 1 )
            { 
                throw new ArgumentException( 
                    SR.GetString(
                        SR.Parameter_collection_empty, 
                        "profiles" ),
                    "profiles" );
            }
 
            foreach (ProfileInfo pi in profiles) {
                string username = pi.UserName; 
                SecUtility.CheckParameter(ref username, true, true, true, 0, "UserName"); 
            }
            return Provider.DeleteProfiles(profiles); 
        }

        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        public static int DeleteProfiles(string[] usernames) 
        { 
            SecUtility.CheckArrayParameter( ref usernames,
                                            true, 
                                            true,
                                            true,
                                            0,
                                            "usernames"); 

 
            return Provider.DeleteProfiles(usernames); 
        }
 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static int DeleteInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate) 
        {
            return Provider.DeleteInactiveProfiles(authenticationOption, userInactiveSinceDate); 
        } 

        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static int GetNumberOfProfiles(ProfileAuthenticationOption authenticationOption)
        { 
            return Provider.GetNumberOfInactiveProfiles(authenticationOption, DateTime.Now.AddDays(1)); //
        } 
 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        public static int GetNumberOfInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate)
        {
            return Provider.GetNumberOfInactiveProfiles(authenticationOption, userInactiveSinceDate); 
        }
 
 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        public static ProfileInfoCollection GetAllProfiles(ProfileAuthenticationOption authenticationOption)
        {
            int totalRecords; 
            return Provider.GetAllProfiles(authenticationOption, 0, Int32.MaxValue, out totalRecords);
        } 
 

        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static ProfileInfoCollection GetAllProfiles(ProfileAuthenticationOption authenticationOption,
                                                           int pageIndex, 
                                                           int pageSize,
                                                           out int totalRecords) 
        { 
            return Provider.GetAllProfiles(authenticationOption, pageIndex, pageSize, out totalRecords);
        } 


        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        public static ProfileInfoCollection GetAllInactiveProfiles(ProfileAuthenticationOption authenticationOption, 
                                                                   DateTime userInactiveSinceDate) 
        {
            int totalRecords; 
            return Provider.GetAllInactiveProfiles(authenticationOption, userInactiveSinceDate, 0, Int32.MaxValue, out totalRecords);
        }

 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        ////////////////////////////////////////////////////////////////////// 
        public static ProfileInfoCollection GetAllInactiveProfiles(ProfileAuthenticationOption authenticationOption,
                                                                   DateTime userInactiveSinceDate, 
                                                                   int pageIndex,
                                                                   int pageSize,
                                                                   out int totalRecords)
        { 
            return Provider.GetAllInactiveProfiles(authenticationOption, userInactiveSinceDate, pageIndex, pageSize, out totalRecords);
        } 
 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        public static ProfileInfoCollection FindProfilesByUserName(ProfileAuthenticationOption authenticationOption,
                                                                   string usernameToMatch)
        { 
            SecUtility.CheckParameter( ref usernameToMatch,
                                       true, 
                                       true, 
                                       false,
                                       0, 
                                       "usernameToMatch" );

            int totalRecords;
            return Provider.FindProfilesByUserName(authenticationOption, usernameToMatch, 0, Int32.MaxValue, out totalRecords); 
        }
 
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        public static ProfileInfoCollection FindProfilesByUserName (ProfileAuthenticationOption authenticationOption,
                                                                    string usernameToMatch,
                                                                    int pageIndex,
                                                                    int pageSize, 
                                                                    out int totalRecords)
        { 
            if ( pageIndex < 0 ) 
            {
                throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex"); 
            }

            if ( pageSize < 1 )
            { 
                throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize");
            } 
 
            SecUtility.CheckParameter( ref usernameToMatch,
                                       true, 
                                       true,
                                       false,
                                       0,
                                       "usernameToMatch" ); 

            return Provider.FindProfilesByUserName(authenticationOption, usernameToMatch, pageIndex, pageSize, out totalRecords); 
        } 

 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static ProfileInfoCollection FindInactiveProfilesByUserName(ProfileAuthenticationOption authenticationOption, 
                                                                           string usernameToMatch,
                                                                           DateTime userInactiveSinceDate) 
        { 
            SecUtility.CheckParameter( ref usernameToMatch,
                                       true, 
                                       true,
                                       false,
                                       0,
                                       "usernameToMatch" ); 

            int totalRecords; 
            return Provider.FindInactiveProfilesByUserName(authenticationOption, usernameToMatch, userInactiveSinceDate, 0, Int32.MaxValue, out totalRecords); 
        }
 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static ProfileInfoCollection FindInactiveProfilesByUserName(ProfileAuthenticationOption authenticationOption, 
                                                                           string usernameToMatch,
                                                                           DateTime userInactiveSinceDate, 
                                                                           int pageIndex, 
                                                                           int pageSize,
                                                                           out int totalRecords) 
        {
            if ( pageIndex < 0 )
            {
                throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex"); 
            }
 
            if ( pageSize < 1 ) 
            {
                throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize"); 
            }

            SecUtility.CheckParameter( ref usernameToMatch,
                                       true, 
                                       true,
                                       false, 
                                       0, 
                                       "usernameToMatch" );
 
            return Provider.FindInactiveProfilesByUserName(authenticationOption, usernameToMatch, userInactiveSinceDate, pageIndex, pageSize, out totalRecords);
        }

 

        ////////////////////////////////////////////////////////////////////// 
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        // Properties 

        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static bool Enabled { 
            get {
                // 
                if (!s_Initialized && !s_InitializedEnabled) { 
                    InitializeEnabled(false);
                } 

                return s_Enabled;
            }
        } 

        ////////////////////////////////////////////////////////////////////// 
        ////////////////////////////////////////////////////////////////////// 
        public static string ApplicationName {
            get { 
                return Provider.ApplicationName;
            }
            set {
                Provider.ApplicationName = value; 
            }
        } 
 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        public static bool AutomaticSaveEnabled {
            get {
                HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
                // WOS #1544130: Don't initialize providers when getting this property, because it is called in ProfileModule.Init 
                InitializeEnabled(false);
                return s_AutomaticSaveEnabled; 
            } 
        }
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        public static ProfileProvider Provider {
            get {
                HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level); 
                Initialize(true);
                return s_Provider; 
            } 
        }
 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static ProfileProviderCollection Providers {
            get { 
                HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
                Initialize(true); 
                return s_Providers; 
            }
        } 

        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        // Private stuff
 
        private static void InitializeEnabled(bool initProviders) { 
            if (!s_Initialized || !s_InitializedProviders) {
                lock (s_Lock) { 
                    if (!s_Initialized || !s_InitializedProviders) {
                        try {
                            ProfileSection config = RuntimeConfig.GetAppConfig().Profile;
                            if (!s_InitializedEnabled) { 
                                s_Enabled = config.Enabled && HttpRuntime.HasAspNetHostingPermission(AspNetHostingPermissionLevel.Low);
                                s_AutomaticSaveEnabled = s_Enabled && config.AutomaticSaveEnabled; 
                                s_InitializedEnabled = true; 
                            }
                            if (initProviders && s_Enabled && !s_InitializedProviders) { 
                                InitProviders(config);
                                s_InitializedProviders = true;
                            }
                        } 
                        catch (Exception e) {
                            s_InitException = e; 
                        } 

                        s_Initialized = true; 
                    }
                }
            }
        } 

        private static void Initialize(bool throwIfNotEnabled) 
        { 
            InitializeEnabled(true);
            if (s_InitException != null) 
                throw s_InitException;
            if (throwIfNotEnabled && !s_Enabled)
                throw new ProviderException(SR.GetString(SR.Profile_not_enabled));
        } 

        ////////////////////////////////////////////////////////////////////// 
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        static private void InitProviders(ProfileSection config) 
        {
#if FEATURE_PAL // FEATURE_PAL won't be supporting profiling.
            return;
#else // FEATURE_PAL 
            s_Providers = new ProfileProviderCollection();
            if (config.Providers != null) { 
                ProvidersHelper.InstantiateProviders(config.Providers, s_Providers, typeof(ProfileProvider)); 
            }
            s_Providers.SetReadOnly(); 
            if (config.DefaultProvider == null)
                throw new ProviderException(SR.GetString(SR.Profile_default_provider_not_specified));

            s_Provider = (ProfileProvider) s_Providers[config.DefaultProvider]; 
            if (s_Provider == null)
                throw new ConfigurationErrorsException(SR.GetString(SR.Profile_default_provider_not_found), config.ElementInformation.Properties["providers"].Source, config.ElementInformation.Properties["providers"].LineNumber); 
 
#endif // FEATURE_PAL
        } 

        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        private static ProfileProvider             s_Provider;
        private static ProfileProviderCollection   s_Providers; 
        private static bool                        s_Enabled; 
        private static bool                        s_Initialized;
        private static bool                        s_InitializedProviders; 
        private static object                      s_Lock = new object();
        private static Exception                   s_InitException;
        private static bool                        s_InitializedEnabled;
        private static bool                        s_AutomaticSaveEnabled; 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 
/*
 * ProfileManager 
 * 
 * Copyright (c) 2002 Microsoft Corporation
 */ 

namespace System.Web.Profile
{
    using  System.Security.Principal; 
    using  System.Security.Permissions;
    using  System.Collections; 
    using  System.Collections.Specialized; 
    using  System.Web.Configuration;
    using  System.Web.Util; 
    using  System.Web.Security;
    using  System.Web.Compilation;
    using  System.Configuration;
    using  System.Configuration.Provider; 
    using  System.Reflection;
    using  System.CodeDom; 
    using System.Web.Hosting; 

    [AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] 
    public static class ProfileManager
    {

        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        public static bool DeleteProfile(string username) 
        {
            SecUtility.CheckParameter( ref username, true, true, true, 0, "username" ); 
            return (Provider.DeleteProfiles(new string [] {username}) != 0);
        }

        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        public static int DeleteProfiles(ProfileInfoCollection profiles) 
        {
            if( profiles == null ) 
            {
                throw new ArgumentNullException( "profiles" );
            }
 
            if ( profiles.Count < 1 )
            { 
                throw new ArgumentException( 
                    SR.GetString(
                        SR.Parameter_collection_empty, 
                        "profiles" ),
                    "profiles" );
            }
 
            foreach (ProfileInfo pi in profiles) {
                string username = pi.UserName; 
                SecUtility.CheckParameter(ref username, true, true, true, 0, "UserName"); 
            }
            return Provider.DeleteProfiles(profiles); 
        }

        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        public static int DeleteProfiles(string[] usernames) 
        { 
            SecUtility.CheckArrayParameter( ref usernames,
                                            true, 
                                            true,
                                            true,
                                            0,
                                            "usernames"); 

 
            return Provider.DeleteProfiles(usernames); 
        }
 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static int DeleteInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate) 
        {
            return Provider.DeleteInactiveProfiles(authenticationOption, userInactiveSinceDate); 
        } 

        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static int GetNumberOfProfiles(ProfileAuthenticationOption authenticationOption)
        { 
            return Provider.GetNumberOfInactiveProfiles(authenticationOption, DateTime.Now.AddDays(1)); //
        } 
 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        public static int GetNumberOfInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate)
        {
            return Provider.GetNumberOfInactiveProfiles(authenticationOption, userInactiveSinceDate); 
        }
 
 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        public static ProfileInfoCollection GetAllProfiles(ProfileAuthenticationOption authenticationOption)
        {
            int totalRecords; 
            return Provider.GetAllProfiles(authenticationOption, 0, Int32.MaxValue, out totalRecords);
        } 
 

        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static ProfileInfoCollection GetAllProfiles(ProfileAuthenticationOption authenticationOption,
                                                           int pageIndex, 
                                                           int pageSize,
                                                           out int totalRecords) 
        { 
            return Provider.GetAllProfiles(authenticationOption, pageIndex, pageSize, out totalRecords);
        } 


        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        public static ProfileInfoCollection GetAllInactiveProfiles(ProfileAuthenticationOption authenticationOption, 
                                                                   DateTime userInactiveSinceDate) 
        {
            int totalRecords; 
            return Provider.GetAllInactiveProfiles(authenticationOption, userInactiveSinceDate, 0, Int32.MaxValue, out totalRecords);
        }

 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        ////////////////////////////////////////////////////////////////////// 
        public static ProfileInfoCollection GetAllInactiveProfiles(ProfileAuthenticationOption authenticationOption,
                                                                   DateTime userInactiveSinceDate, 
                                                                   int pageIndex,
                                                                   int pageSize,
                                                                   out int totalRecords)
        { 
            return Provider.GetAllInactiveProfiles(authenticationOption, userInactiveSinceDate, pageIndex, pageSize, out totalRecords);
        } 
 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        public static ProfileInfoCollection FindProfilesByUserName(ProfileAuthenticationOption authenticationOption,
                                                                   string usernameToMatch)
        { 
            SecUtility.CheckParameter( ref usernameToMatch,
                                       true, 
                                       true, 
                                       false,
                                       0, 
                                       "usernameToMatch" );

            int totalRecords;
            return Provider.FindProfilesByUserName(authenticationOption, usernameToMatch, 0, Int32.MaxValue, out totalRecords); 
        }
 
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        public static ProfileInfoCollection FindProfilesByUserName (ProfileAuthenticationOption authenticationOption,
                                                                    string usernameToMatch,
                                                                    int pageIndex,
                                                                    int pageSize, 
                                                                    out int totalRecords)
        { 
            if ( pageIndex < 0 ) 
            {
                throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex"); 
            }

            if ( pageSize < 1 )
            { 
                throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize");
            } 
 
            SecUtility.CheckParameter( ref usernameToMatch,
                                       true, 
                                       true,
                                       false,
                                       0,
                                       "usernameToMatch" ); 

            return Provider.FindProfilesByUserName(authenticationOption, usernameToMatch, pageIndex, pageSize, out totalRecords); 
        } 

 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static ProfileInfoCollection FindInactiveProfilesByUserName(ProfileAuthenticationOption authenticationOption, 
                                                                           string usernameToMatch,
                                                                           DateTime userInactiveSinceDate) 
        { 
            SecUtility.CheckParameter( ref usernameToMatch,
                                       true, 
                                       true,
                                       false,
                                       0,
                                       "usernameToMatch" ); 

            int totalRecords; 
            return Provider.FindInactiveProfilesByUserName(authenticationOption, usernameToMatch, userInactiveSinceDate, 0, Int32.MaxValue, out totalRecords); 
        }
 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static ProfileInfoCollection FindInactiveProfilesByUserName(ProfileAuthenticationOption authenticationOption, 
                                                                           string usernameToMatch,
                                                                           DateTime userInactiveSinceDate, 
                                                                           int pageIndex, 
                                                                           int pageSize,
                                                                           out int totalRecords) 
        {
            if ( pageIndex < 0 )
            {
                throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex"); 
            }
 
            if ( pageSize < 1 ) 
            {
                throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize"); 
            }

            SecUtility.CheckParameter( ref usernameToMatch,
                                       true, 
                                       true,
                                       false, 
                                       0, 
                                       "usernameToMatch" );
 
            return Provider.FindInactiveProfilesByUserName(authenticationOption, usernameToMatch, userInactiveSinceDate, pageIndex, pageSize, out totalRecords);
        }

 

        ////////////////////////////////////////////////////////////////////// 
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        // Properties 

        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static bool Enabled { 
            get {
                // 
                if (!s_Initialized && !s_InitializedEnabled) { 
                    InitializeEnabled(false);
                } 

                return s_Enabled;
            }
        } 

        ////////////////////////////////////////////////////////////////////// 
        ////////////////////////////////////////////////////////////////////// 
        public static string ApplicationName {
            get { 
                return Provider.ApplicationName;
            }
            set {
                Provider.ApplicationName = value; 
            }
        } 
 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        public static bool AutomaticSaveEnabled {
            get {
                HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
                // WOS #1544130: Don't initialize providers when getting this property, because it is called in ProfileModule.Init 
                InitializeEnabled(false);
                return s_AutomaticSaveEnabled; 
            } 
        }
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        public static ProfileProvider Provider {
            get {
                HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level); 
                Initialize(true);
                return s_Provider; 
            } 
        }
 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        public static ProfileProviderCollection Providers {
            get { 
                HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
                Initialize(true); 
                return s_Providers; 
            }
        } 

        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        // Private stuff
 
        private static void InitializeEnabled(bool initProviders) { 
            if (!s_Initialized || !s_InitializedProviders) {
                lock (s_Lock) { 
                    if (!s_Initialized || !s_InitializedProviders) {
                        try {
                            ProfileSection config = RuntimeConfig.GetAppConfig().Profile;
                            if (!s_InitializedEnabled) { 
                                s_Enabled = config.Enabled && HttpRuntime.HasAspNetHostingPermission(AspNetHostingPermissionLevel.Low);
                                s_AutomaticSaveEnabled = s_Enabled && config.AutomaticSaveEnabled; 
                                s_InitializedEnabled = true; 
                            }
                            if (initProviders && s_Enabled && !s_InitializedProviders) { 
                                InitProviders(config);
                                s_InitializedProviders = true;
                            }
                        } 
                        catch (Exception e) {
                            s_InitException = e; 
                        } 

                        s_Initialized = true; 
                    }
                }
            }
        } 

        private static void Initialize(bool throwIfNotEnabled) 
        { 
            InitializeEnabled(true);
            if (s_InitException != null) 
                throw s_InitException;
            if (throwIfNotEnabled && !s_Enabled)
                throw new ProviderException(SR.GetString(SR.Profile_not_enabled));
        } 

        ////////////////////////////////////////////////////////////////////// 
        ////////////////////////////////////////////////////////////////////// 
        //////////////////////////////////////////////////////////////////////
        static private void InitProviders(ProfileSection config) 
        {
#if FEATURE_PAL // FEATURE_PAL won't be supporting profiling.
            return;
#else // FEATURE_PAL 
            s_Providers = new ProfileProviderCollection();
            if (config.Providers != null) { 
                ProvidersHelper.InstantiateProviders(config.Providers, s_Providers, typeof(ProfileProvider)); 
            }
            s_Providers.SetReadOnly(); 
            if (config.DefaultProvider == null)
                throw new ProviderException(SR.GetString(SR.Profile_default_provider_not_specified));

            s_Provider = (ProfileProvider) s_Providers[config.DefaultProvider]; 
            if (s_Provider == null)
                throw new ConfigurationErrorsException(SR.GetString(SR.Profile_default_provider_not_found), config.ElementInformation.Properties["providers"].Source, config.ElementInformation.Properties["providers"].LineNumber); 
 
#endif // FEATURE_PAL
        } 

        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        private static ProfileProvider             s_Provider;
        private static ProfileProviderCollection   s_Providers; 
        private static bool                        s_Enabled; 
        private static bool                        s_Initialized;
        private static bool                        s_InitializedProviders; 
        private static object                      s_Lock = new object();
        private static Exception                   s_InitException;
        private static bool                        s_InitializedEnabled;
        private static bool                        s_AutomaticSaveEnabled; 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK