Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / xsp / System / Web / Extensions / Profile / ProfileService.cs / 1 / ProfileService.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Profile { using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Configuration; using System.Diagnostics; using System.Web.ApplicationServices; using System.Web.Script.Serialization; using System.Web.Script.Services; using System.Web.Services; [ScriptService] internal sealed class ProfileService { private static JavaScriptSerializer _javaScriptSerializer; private static JavaScriptSerializer JavaScriptSerializer { get { if (_javaScriptSerializer == null) { HttpContext context = HttpContext.Current; WebServiceData webServiceData = WebServiceData.GetWebServiceData(context, context.Request.FilePath); _javaScriptSerializer = webServiceData.Serializer; Debug.Assert(_javaScriptSerializer != null); } return _javaScriptSerializer; } } private static DictionaryGetProfile(HttpContext context, IEnumerable properties) { ProfileBase profile = context.Profile; if(profile == null) { return null; } Dictionary allowedGet = ApplicationServiceHelper.ProfileAllowedGet; if (allowedGet == null || allowedGet.Count == 0) { // there are no readable properties return new Dictionary (0); } Dictionary dictionary = null; if(properties == null) { // initialize capacity to the exact number we will fill: the number of readAccessProperties dictionary = new Dictionary (allowedGet.Count, StringComparer.OrdinalIgnoreCase); // Returns all profile properties defined in configuration when given properties array is null string propertyName; foreach(KeyValuePair entry in allowedGet) { // note: dont enumerate over _allowedGet.Keys since it unecessarily creates a keys collection object propertyName = entry.Key; dictionary.Add(propertyName, profile[propertyName]); } } else { // initialize capacity to the largest possible number of properties we may return. dictionary = new Dictionary (allowedGet.Count, StringComparer.OrdinalIgnoreCase); // Returns the specified profile properties (if empty array, no properties returned) foreach(string propertyName in properties) { if(allowedGet.ContainsKey(propertyName)) { dictionary.Add(propertyName, profile[propertyName]); } } } return dictionary; } private static Collection SetProfile(HttpContext context, IDictionary values) { // return collection of successfully saved settings. Collection failedSettings = new Collection (); if (values == null || values.Count == 0) { // no values were given, so we're done, and there are no failures. return failedSettings; } ProfileBase profile = context.Profile; Dictionary allowedSet = ApplicationServiceHelper.ProfileAllowedSet; // Note that profile may be null, and allowedSet may be null. // Even though no properties will be saved in these cases, we still iterate over the given values to be set, // because we must build up the failed collection anyway. bool profileDirty = false; foreach(KeyValuePair entry in values) { string propertyName = entry.Key; if (profile != null && allowedSet != null && allowedSet.ContainsKey(propertyName)) { SettingsProperty settingProperty = ProfileBase.Properties[propertyName]; if (settingProperty != null && !settingProperty.IsReadOnly && (!profile.IsAnonymous || (bool)settingProperty.Attributes["AllowAnonymous"])) { Type propertyType = settingProperty.PropertyType; object convertedValue; if (ObjectConverter.TryConvertObjectToType(entry.Value, propertyType, JavaScriptSerializer, out convertedValue)) { profile[propertyName] = convertedValue; profileDirty = true; // setting successfully saved. // short circuit the foreach so only failed cases fall through. continue; } } } // Failed cases fall through to here. Possible failure reasons: // 1. type couldn't be converted for some reason (TryConvert returns false) // 2. the property doesnt exist (settingProperty == null) // 3. the property is read only (settingProperty.IsReadOnly) // 4. the current user is anonymous and the setting doesn't allow anonymous access // 5. profile for this user is null (profile == null) // 6. no properties are allowed for setting (allowedSet is null) // 7. *this* property is not allowed for setting (allowedSet.Contains returns false) failedSettings.Add(propertyName); } if (profileDirty) { profile.Save(); } return failedSettings; } [WebMethod] public Dictionary GetAllPropertiesForCurrentUser(bool authenticatedUserOnly) { ApplicationServiceHelper.EnsureProfileServiceEnabled(); HttpContext context = HttpContext.Current; if (authenticatedUserOnly) { ApplicationServiceHelper.EnsureAuthenticated(context); } return ProfileService.GetProfile(context, null); } [WebMethod] public Dictionary GetPropertiesForCurrentUser(IEnumerable properties, bool authenticatedUserOnly) { ApplicationServiceHelper.EnsureProfileServiceEnabled(); HttpContext context = HttpContext.Current; if (authenticatedUserOnly) { ApplicationServiceHelper.EnsureAuthenticated(context); } return ProfileService.GetProfile(context, properties); } [WebMethod] public Collection GetPropertiesMetadata() { ApplicationServiceHelper.EnsureProfileServiceEnabled(); return ApplicationServiceHelper.GetProfilePropertiesMetadata(); } [WebMethod] public Collection SetPropertiesForCurrentUser(IDictionary values, bool authenticatedUserOnly) { ApplicationServiceHelper.EnsureProfileServiceEnabled(); HttpContext context = HttpContext.Current; if (authenticatedUserOnly) { ApplicationServiceHelper.EnsureAuthenticated(context); } return ProfileService.SetProfile(context, values); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Profile { using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Configuration; using System.Diagnostics; using System.Web.ApplicationServices; using System.Web.Script.Serialization; using System.Web.Script.Services; using System.Web.Services; [ScriptService] internal sealed class ProfileService { private static JavaScriptSerializer _javaScriptSerializer; private static JavaScriptSerializer JavaScriptSerializer { get { if (_javaScriptSerializer == null) { HttpContext context = HttpContext.Current; WebServiceData webServiceData = WebServiceData.GetWebServiceData(context, context.Request.FilePath); _javaScriptSerializer = webServiceData.Serializer; Debug.Assert(_javaScriptSerializer != null); } return _javaScriptSerializer; } } private static DictionaryGetProfile(HttpContext context, IEnumerable properties) { ProfileBase profile = context.Profile; if(profile == null) { return null; } Dictionary allowedGet = ApplicationServiceHelper.ProfileAllowedGet; if (allowedGet == null || allowedGet.Count == 0) { // there are no readable properties return new Dictionary (0); } Dictionary dictionary = null; if(properties == null) { // initialize capacity to the exact number we will fill: the number of readAccessProperties dictionary = new Dictionary (allowedGet.Count, StringComparer.OrdinalIgnoreCase); // Returns all profile properties defined in configuration when given properties array is null string propertyName; foreach(KeyValuePair entry in allowedGet) { // note: dont enumerate over _allowedGet.Keys since it unecessarily creates a keys collection object propertyName = entry.Key; dictionary.Add(propertyName, profile[propertyName]); } } else { // initialize capacity to the largest possible number of properties we may return. dictionary = new Dictionary (allowedGet.Count, StringComparer.OrdinalIgnoreCase); // Returns the specified profile properties (if empty array, no properties returned) foreach(string propertyName in properties) { if(allowedGet.ContainsKey(propertyName)) { dictionary.Add(propertyName, profile[propertyName]); } } } return dictionary; } private static Collection SetProfile(HttpContext context, IDictionary values) { // return collection of successfully saved settings. Collection failedSettings = new Collection (); if (values == null || values.Count == 0) { // no values were given, so we're done, and there are no failures. return failedSettings; } ProfileBase profile = context.Profile; Dictionary allowedSet = ApplicationServiceHelper.ProfileAllowedSet; // Note that profile may be null, and allowedSet may be null. // Even though no properties will be saved in these cases, we still iterate over the given values to be set, // because we must build up the failed collection anyway. bool profileDirty = false; foreach(KeyValuePair entry in values) { string propertyName = entry.Key; if (profile != null && allowedSet != null && allowedSet.ContainsKey(propertyName)) { SettingsProperty settingProperty = ProfileBase.Properties[propertyName]; if (settingProperty != null && !settingProperty.IsReadOnly && (!profile.IsAnonymous || (bool)settingProperty.Attributes["AllowAnonymous"])) { Type propertyType = settingProperty.PropertyType; object convertedValue; if (ObjectConverter.TryConvertObjectToType(entry.Value, propertyType, JavaScriptSerializer, out convertedValue)) { profile[propertyName] = convertedValue; profileDirty = true; // setting successfully saved. // short circuit the foreach so only failed cases fall through. continue; } } } // Failed cases fall through to here. Possible failure reasons: // 1. type couldn't be converted for some reason (TryConvert returns false) // 2. the property doesnt exist (settingProperty == null) // 3. the property is read only (settingProperty.IsReadOnly) // 4. the current user is anonymous and the setting doesn't allow anonymous access // 5. profile for this user is null (profile == null) // 6. no properties are allowed for setting (allowedSet is null) // 7. *this* property is not allowed for setting (allowedSet.Contains returns false) failedSettings.Add(propertyName); } if (profileDirty) { profile.Save(); } return failedSettings; } [WebMethod] public Dictionary GetAllPropertiesForCurrentUser(bool authenticatedUserOnly) { ApplicationServiceHelper.EnsureProfileServiceEnabled(); HttpContext context = HttpContext.Current; if (authenticatedUserOnly) { ApplicationServiceHelper.EnsureAuthenticated(context); } return ProfileService.GetProfile(context, null); } [WebMethod] public Dictionary GetPropertiesForCurrentUser(IEnumerable properties, bool authenticatedUserOnly) { ApplicationServiceHelper.EnsureProfileServiceEnabled(); HttpContext context = HttpContext.Current; if (authenticatedUserOnly) { ApplicationServiceHelper.EnsureAuthenticated(context); } return ProfileService.GetProfile(context, properties); } [WebMethod] public Collection GetPropertiesMetadata() { ApplicationServiceHelper.EnsureProfileServiceEnabled(); return ApplicationServiceHelper.GetProfilePropertiesMetadata(); } [WebMethod] public Collection SetPropertiesForCurrentUser(IDictionary values, bool authenticatedUserOnly) { ApplicationServiceHelper.EnsureProfileServiceEnabled(); HttpContext context = HttpContext.Current; if (authenticatedUserOnly) { ApplicationServiceHelper.EnsureAuthenticated(context); } return ProfileService.SetProfile(context, values); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DispatcherObject.cs
- DocumentViewerBase.cs
- NewArrayExpression.cs
- CodeThrowExceptionStatement.cs
- PointCollectionValueSerializer.cs
- COM2ColorConverter.cs
- AspNetSynchronizationContext.cs
- RepeatButtonAutomationPeer.cs
- _FtpDataStream.cs
- securestring.cs
- DesignerSerializationOptionsAttribute.cs
- SqlDuplicator.cs
- ListBox.cs
- StandardBindingElementCollection.cs
- FormClosedEvent.cs
- SqlBulkCopyColumnMappingCollection.cs
- keycontainerpermission.cs
- ParamArrayAttribute.cs
- ZipPackagePart.cs
- LiteralControl.cs
- Zone.cs
- TypeConverter.cs
- SqlUtil.cs
- SchemaImporterExtensionElementCollection.cs
- DisableDpiAwarenessAttribute.cs
- DebugManager.cs
- WindowsSolidBrush.cs
- DiagnosticEventProvider.cs
- DragCompletedEventArgs.cs
- ExtractedStateEntry.cs
- HostingPreferredMapPath.cs
- LeafCellTreeNode.cs
- IncrementalHitTester.cs
- DeobfuscatingStream.cs
- ClonableStack.cs
- TextBox.cs
- ModelFunction.cs
- LockRecoveryTask.cs
- StylusPointPropertyId.cs
- PasswordBoxAutomationPeer.cs
- HostVisual.cs
- PageHandlerFactory.cs
- CoTaskMemHandle.cs
- DSASignatureDeformatter.cs
- XmlName.cs
- DataRelation.cs
- DynamicScriptObject.cs
- URI.cs
- WindowsToolbar.cs
- EndpointDispatcherTable.cs
- Assert.cs
- WarningException.cs
- SystemTcpConnection.cs
- CustomSignedXml.cs
- SkipQueryOptionExpression.cs
- DataControlFieldHeaderCell.cs
- CodeArrayIndexerExpression.cs
- DataRowExtensions.cs
- WorkflowMarkupSerializationManager.cs
- ButtonPopupAdapter.cs
- PieceNameHelper.cs
- EUCJPEncoding.cs
- MetadataCollection.cs
- TextRange.cs
- EntityViewGenerationConstants.cs
- OdbcEnvironmentHandle.cs
- CorrelationTokenTypeConvertor.cs
- TableAdapterManagerMethodGenerator.cs
- ChtmlCalendarAdapter.cs
- ProxyGenerator.cs
- PagedDataSource.cs
- TextClipboardData.cs
- DeclarativeExpressionConditionDeclaration.cs
- ByteStack.cs
- VisualBasicValue.cs
- XmlSchemaIdentityConstraint.cs
- MediaContext.cs
- x509utils.cs
- EventSetterHandlerConverter.cs
- ErrorsHelper.cs
- UrlMappingCollection.cs
- MouseCaptureWithinProperty.cs
- BasicHttpBindingCollectionElement.cs
- TableItemProviderWrapper.cs
- Font.cs
- PermissionToken.cs
- HttpCachePolicyElement.cs
- SqlDataSourceCommandEventArgs.cs
- MsmqBindingElementBase.cs
- UIElement3D.cs
- odbcmetadatafactory.cs
- CacheMode.cs
- WebPartTracker.cs
- KoreanLunisolarCalendar.cs
- LambdaValue.cs
- Size.cs
- Latin1Encoding.cs
- FillErrorEventArgs.cs
- _SSPIWrapper.cs
- ZipIOEndOfCentralDirectoryBlock.cs