Esempio n. 1
0
        void BuildProfileClass(ProfileSection ps, string className, ProfilePropertySettingsCollection psc,
                               CodeNamespace ns, string baseClass, bool baseIsGlobal,
                               SortedList <string, string> groupProperties)
        {
            CodeTypeDeclaration profileClass = new CodeTypeDeclaration(className);
            CodeTypeReference   cref         = new CodeTypeReference(baseClass);

            if (baseIsGlobal)
            {
                cref.Options |= CodeTypeReferenceOptions.GlobalReference;
            }
            profileClass.BaseTypes.Add(cref);
            profileClass.TypeAttributes = TypeAttributes.Public;
            ns.Types.Add(profileClass);

            foreach (ProfilePropertySettings pset in psc)
            {
                AddProfileClassProperty(ps, profileClass, pset);
            }
            if (groupProperties != null && groupProperties.Count > 0)
            {
                foreach (KeyValuePair <string, string> group in groupProperties)
                {
                    AddProfileClassGroupProperty(group.Key, group.Value, profileClass);
                }
            }
            AddProfileClassGetProfileMethod(profileClass);
        }
Esempio n. 2
0
 //////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////
 private static void AddProfilePropertySettingsForCompilation(ProfilePropertySettingsCollection propertyCollection, Hashtable ht, string groupName)
 {
     foreach (ProfilePropertySettings pps in propertyCollection)
     {
         ProfileNameTypeStruct prop = new ProfileNameTypeStruct();
         if (groupName != null)
         {
             prop.Name = groupName + "." + pps.Name;
         }
         else
         {
             prop.Name = pps.Name;
         }
         Type t = pps.TypeInternal;
         if (t == null)
         {
             t = ResolvePropertyTypeForCommonTypes(pps.Type.ToLower(System.Globalization.CultureInfo.InvariantCulture));
         }
         if (t == null)
         {
             t = BuildManager.GetType(pps.Type, false);
         }
         if (t == null)
         {
             prop.PropertyCodeRefType = new CodeTypeReference(pps.Type);
         }
         else
         {
             prop.PropertyCodeRefType = new CodeTypeReference(t);
         }
         prop.PropertyType = t;
         pps.TypeInternal  = t;
         prop.IsReadOnly   = pps.ReadOnly;
         prop.LineNumber   = pps.ElementInformation.Properties["name"].LineNumber;
         prop.FileName     = pps.ElementInformation.Properties["name"].Source;
         ht.Add(prop.Name, prop);
     }
 }
Esempio n. 3
0
 private static void AddProfilePropertySettingsForCompilation(ProfilePropertySettingsCollection propertyCollection, Hashtable ht, string groupName)
 {
     foreach (ProfilePropertySettings settings in propertyCollection)
     {
         ProfileNameTypeStruct struct2 = new ProfileNameTypeStruct();
         if (groupName != null)
         {
             struct2.Name = groupName + "." + settings.Name;
         }
         else
         {
             struct2.Name = settings.Name;
         }
         Type typeInternal = settings.TypeInternal;
         if (typeInternal == null)
         {
             typeInternal = ResolvePropertyTypeForCommonTypes(settings.Type.ToLower(CultureInfo.InvariantCulture));
         }
         if (typeInternal == null)
         {
             typeInternal = BuildManager.GetType(settings.Type, false);
         }
         if (typeInternal == null)
         {
             struct2.PropertyCodeRefType = new CodeTypeReference(settings.Type);
         }
         else
         {
             struct2.PropertyCodeRefType = new CodeTypeReference(typeInternal);
         }
         struct2.PropertyType  = typeInternal;
         settings.TypeInternal = typeInternal;
         struct2.IsReadOnly    = settings.ReadOnly;
         struct2.LineNumber    = settings.ElementInformation.Properties["name"].LineNumber;
         struct2.FileName      = settings.ElementInformation.Properties["name"].Source;
         ht.Add(struct2.Name, struct2);
     }
 }
Esempio n. 4
0
        static void InitProperties()
        {
            SettingsPropertyCollection properties = new SettingsPropertyCollection();

            ProfileSection config = (ProfileSection)WebConfigurationManager.GetSection("system.web/profile");
            RootProfilePropertySettingsCollection ps = config.PropertySettings;

            for (int i = 0; i < ps.GroupSettings.Count; i++)
            {
                ProfileGroupSettings pgs = ps.GroupSettings [i];
                ProfilePropertySettingsCollection ppsc = pgs.PropertySettings;

                for (int s = 0; s < ppsc.Count; s++)
                {
                    SettingsProperty settingsProperty = CreateSettingsProperty(pgs, ppsc [s]);
                    ValidateProperty(settingsProperty, ppsc [s].ElementInformation);
                    properties.Add(settingsProperty);
                }
            }

            for (int s = 0; s < ps.Count; s++)
            {
                SettingsProperty settingsProperty = CreateSettingsProperty(null, ps [s]);
                ValidateProperty(settingsProperty, ps [s].ElementInformation);
                properties.Add(settingsProperty);
            }

            if (config.Inherits.Length > 0)
            {
                Type profileType = ProfileParser.GetProfileCommonType(HttpContext.Current);
                if (profileType != null)
                {
                    Type properiesType = profileType.BaseType;
                    for (; ;)
                    {
                        PropertyInfo [] pi = properiesType.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);
                        if (pi.Length > 0)
                        {
                            for (int i = 0; i < pi.Length; i++)
                            {
                                properties.Add(CreateSettingsProperty(pi [i]));
                            }
                        }

                        if (properiesType.BaseType == null ||
                            properiesType.BaseType == typeof(ProfileBase))
                        {
                            break;
                        }

                        properiesType = properiesType.BaseType;
                    }
                }
            }

            properties.SetReadOnly();
            lock (Profiles_SettingsPropertyCollection) {
                if (_properties == null)
                {
                    _properties = properties;
                }
            }
        }
Esempio n. 5
0
        private static void AddPropertySettingsFromConfig(Type baseType, bool fAnonEnabled, bool hasLowTrust, ProfilePropertySettingsCollection settingsCollection, string groupName)
        {
            foreach (ProfilePropertySettings pps in settingsCollection)
            {
                string name = (groupName != null) ? (groupName + "." + pps.Name) : pps.Name;
                if (baseType != typeof(ProfileBase) && s_Properties[name] != null)
                {
                    throw new ConfigurationErrorsException(SR.GetString(SR.Profile_property_already_added), null, pps.ElementInformation.Properties["name"].Source, pps.ElementInformation.Properties["name"].LineNumber);
                }

                try {
                    if (pps.TypeInternal == null)
                    {
                        pps.TypeInternal = ResolvePropertyType(pps.Type);
                    }
                }
                catch (Exception e) {
                    throw new ConfigurationErrorsException(SR.GetString(SR.Profile_could_not_create_type, e.Message), e, pps.ElementInformation.Properties["type"].Source, pps.ElementInformation.Properties["type"].LineNumber);
                }
                if (!fAnonEnabled)
                {
                    bool fAllowAnonymous = pps.AllowAnonymous;
                    if (fAllowAnonymous)
                    {
                        throw new ConfigurationErrorsException(SR.GetString(SR.Annoymous_id_module_not_enabled, pps.Name), pps.ElementInformation.Properties["allowAnonymous"].Source, pps.ElementInformation.Properties["allowAnonymous"].LineNumber);
                    }
                }
                if (hasLowTrust)
                {
                    SetProviderForProperty(pps);
                }
                else
                {
                    pps.ProviderInternal = null;
                }
                // Providers that use NetDataContractSerialzier do not require Serializable attributes any longer, only enforce this for the SqlProfileProvider
                bool requireSerializationCheck = pps.ProviderInternal == null || pps.ProviderInternal.GetType() == typeof(SqlProfileProvider);
                if (requireSerializationCheck && pps.SerializeAs == SerializationMode.Binary && !pps.TypeInternal.IsSerializable)
                {
                    throw new ConfigurationErrorsException(SR.GetString(SR.Property_not_serializable, pps.Name), pps.ElementInformation.Properties["serializeAs"].Source, pps.ElementInformation.Properties["serializeAs"].LineNumber);
                }

                SettingsAttributeDictionary settings = new SettingsAttributeDictionary();
                settings.Add("AllowAnonymous", pps.AllowAnonymous);
                if (!string.IsNullOrEmpty(pps.CustomProviderData))
                {
                    settings.Add("CustomProviderData", pps.CustomProviderData);
                }
                SettingsProperty sp = new SettingsProperty(name, pps.TypeInternal, pps.ProviderInternal, pps.ReadOnly, pps.DefaultValue, (SettingsSerializeAs)pps.SerializeAs, settings, false, true);
                s_Properties.Add(sp);
            }
        }
Esempio n. 6
0
 private static void AddPropertySettingsFromConfig(Type baseType, bool fAnonEnabled, bool hasLowTrust, ProfilePropertySettingsCollection settingsCollection, string groupName)
 {
     foreach (ProfilePropertySettings settings in settingsCollection)
     {
         string name = (groupName != null) ? (groupName + "." + settings.Name) : settings.Name;
         if ((baseType != typeof(ProfileBase)) && (s_Properties[name] != null))
         {
             throw new ConfigurationErrorsException(System.Web.SR.GetString("Profile_property_already_added"), null, settings.ElementInformation.Properties["name"].Source, settings.ElementInformation.Properties["name"].LineNumber);
         }
         try
         {
             if (settings.TypeInternal == null)
             {
                 settings.TypeInternal = ResolvePropertyType(settings.Type);
             }
         }
         catch (Exception exception)
         {
             throw new ConfigurationErrorsException(System.Web.SR.GetString("Profile_could_not_create_type", new object[] { exception.Message }), exception, settings.ElementInformation.Properties["type"].Source, settings.ElementInformation.Properties["type"].LineNumber);
         }
         if (!fAnonEnabled && settings.AllowAnonymous)
         {
             throw new ConfigurationErrorsException(System.Web.SR.GetString("Annoymous_id_module_not_enabled", new object[] { settings.Name }), settings.ElementInformation.Properties["allowAnonymous"].Source, settings.ElementInformation.Properties["allowAnonymous"].LineNumber);
         }
         if ((settings.SerializeAs == SerializationMode.Binary) && !settings.TypeInternal.IsSerializable)
         {
             throw new ConfigurationErrorsException(System.Web.SR.GetString("Property_not_serializable", new object[] { settings.Name }), settings.ElementInformation.Properties["serializeAs"].Source, settings.ElementInformation.Properties["serializeAs"].LineNumber);
         }
         if (hasLowTrust)
         {
             SetProviderForProperty(settings);
         }
         else
         {
             settings.ProviderInternal = null;
         }
         SettingsAttributeDictionary attributes = new SettingsAttributeDictionary();
         attributes.Add("AllowAnonymous", settings.AllowAnonymous);
         if (!string.IsNullOrEmpty(settings.CustomProviderData))
         {
             attributes.Add("CustomProviderData", settings.CustomProviderData);
         }
         SettingsProperty property = new SettingsProperty(name, settings.TypeInternal, settings.ProviderInternal, settings.ReadOnly, settings.DefaultValue, (SettingsSerializeAs)settings.SerializeAs, attributes, false, true);
         s_Properties.Add(property);
     }
 }