ProfileManager.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Profile / ProfileManager.cs / 1305376 / 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; 

    public static class ProfileManager 
    {
        private static ProfilePropertySettingsCollection s_dynamicProperties = new ProfilePropertySettingsCollection();
        internal static ProfilePropertySettingsCollection DynamicProfileProperties {
            get { 
                return s_dynamicProperties;
            } 
        } 

        public static void AddDynamicProfileProperty(ProfilePropertySettings property) { 
            BuildManager.ThrowIfPreAppStartNotRunning();
            s_dynamicProperties.Add(property);
        }
 
        //////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////// 
        ////////////////////////////////////////////////////////////////////// 
        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); 
                if (s_Provider == null) { 
                    throw new InvalidOperationException(SR.GetString(SR.Profile_default_provider_not_found));
                } 
                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 || !s_InitializeDefaultProvider) {
                lock (s_Lock) { 
                    if (!s_Initialized || !s_InitializedProviders || !s_InitializeDefaultProvider) {
                        try { 
                            ProfileSection config = MTConfigUtil.GetProfileAppConfig(); 
                            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 || !s_InitializeDefaultProvider)) { 
                                InitProviders(config);
                            } 
                        } 
                        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 (!s_InitializedProviders) {
                s_Providers = new ProfileProviderCollection(); 
                if (config.Providers != null) { 
                    ProvidersHelper.InstantiateProviders(config.Providers, s_Providers, typeof(ProfileProvider));
                } 
                s_InitializedProviders = true;
            }

            bool canInitializeDefaultProvider = (!HostingEnvironment.IsHosted || BuildManager.PreStartInitStage == PreStartInitStage.AfterPreStartInit); 
            if (!s_InitializeDefaultProvider && canInitializeDefaultProvider) {
                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); 

                s_InitializeDefaultProvider = true; 
            } 
        }
 
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        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 bool                        s_InitializeDefaultProvider; 
        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