Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / Profile / ProfileManager.cs / 2 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DynamicDataRouteHandler.cs
- SubstitutionList.cs
- RuleSettings.cs
- Table.cs
- MethodImplAttribute.cs
- HyperLinkStyle.cs
- PlaceHolder.cs
- AssemblyInfo.cs
- IncrementalReadDecoders.cs
- ElementFactory.cs
- RowsCopiedEventArgs.cs
- SEHException.cs
- DragCompletedEventArgs.cs
- SessionPageStatePersister.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- HtmlToClrEventProxy.cs
- ValidatorCollection.cs
- SqlMultiplexer.cs
- SiteMapHierarchicalDataSourceView.cs
- XmlHierarchicalEnumerable.cs
- CompilerGlobalScopeAttribute.cs
- EntityDataSourceColumn.cs
- GridItemCollection.cs
- UnmanagedHandle.cs
- ActivityCodeDomReferenceService.cs
- RectAnimation.cs
- CustomAssemblyResolver.cs
- CompiledAction.cs
- NativeCppClassAttribute.cs
- ListViewGroupItemCollection.cs
- Atom10FormatterFactory.cs
- AsyncSerializedWorker.cs
- KeyPullup.cs
- ServiceHostingEnvironment.cs
- AuthenticationSection.cs
- DependencyPropertyValueSerializer.cs
- SchemaTypeEmitter.cs
- DocumentsTrace.cs
- ToolStripItemImageRenderEventArgs.cs
- ToolStripOverflowButton.cs
- mda.cs
- TripleDES.cs
- BinaryObjectInfo.cs
- SemaphoreFullException.cs
- SchemaMapping.cs
- SortedDictionary.cs
- BitArray.cs
- ApplicationBuildProvider.cs
- OracleInternalConnection.cs
- TableRowGroupCollection.cs
- SetMemberBinder.cs
- StringValidatorAttribute.cs
- MarkupWriter.cs
- SafeArchiveContext.cs
- ISAPIRuntime.cs
- path.cs
- WebServiceTypeData.cs
- SecureUICommand.cs
- HttpHandlerActionCollection.cs
- ElementFactory.cs
- GridSplitter.cs
- ProjectedWrapper.cs
- WindowsButton.cs
- InvalidateEvent.cs
- TraceUtils.cs
- TdsValueSetter.cs
- DependentTransaction.cs
- HttpAsyncResult.cs
- TextStore.cs
- odbcmetadatacolumnnames.cs
- PopupRoot.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- ConnectionPointCookie.cs
- OperationGenerator.cs
- FormatterServices.cs
- HttpInputStream.cs
- CodeDOMProvider.cs
- DisposableCollectionWrapper.cs
- EdmConstants.cs
- HttpCacheParams.cs
- WebPartZoneDesigner.cs
- Invariant.cs
- HttpException.cs
- XmlNullResolver.cs
- LocalizableResourceBuilder.cs
- KeyedCollection.cs
- CodeMethodInvokeExpression.cs
- DbSource.cs
- __ConsoleStream.cs
- PieceDirectory.cs
- RelationshipWrapper.cs
- LineGeometry.cs
- FormsAuthenticationCredentials.cs
- RelationshipFixer.cs
- DateTimeConstantAttribute.cs
- DecimalStorage.cs
- ElementHost.cs
- DataPagerCommandEventArgs.cs
- TransportManager.cs
- ListSourceHelper.cs