Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / Configuration / SessionStateSection.cs / 2 / SessionStateSection.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Configuration { using System; using System.Xml; using System.Configuration; using System.Collections.Specialized; using System.Collections; using System.Globalization; using System.IO; using System.Text; using System.ComponentModel; using System.Web.SessionState; using System.Diagnostics; using System.Security.Permissions; /**/ [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class SessionStateSection : ConfigurationSection { private static readonly ConfigurationElementProperty s_elemProperty = new ConfigurationElementProperty(new CallbackValidator(typeof(SessionStateSection), Validate)); private static ConfigurationPropertyCollection _properties; private static readonly ConfigurationProperty _propMode = new ConfigurationProperty("mode", typeof(SessionStateMode), SessionStateModule.MODE_DEFAULT, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propStateConnectionString = new ConfigurationProperty("stateConnectionString", typeof(string), SessionStateModule.STATE_CONNECTION_STRING_DEFAULT, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propStateNetworkTimeout = new ConfigurationProperty("stateNetworkTimeout", typeof(TimeSpan), #if FEATURE_PAL // FEATURE_PAL does not enable OutOfProcSessionStore TimeSpan.FromSeconds(600), #else // FEATURE_PAL TimeSpan.FromSeconds((long) OutOfProcSessionStateStore.STATE_NETWORK_TIMEOUT_DEFAULT), #endif // FEATURE_PAL StdValidatorsAndConverters.TimeSpanSecondsOrInfiniteConverter, StdValidatorsAndConverters.PositiveTimeSpanValidator, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propSqlConnectionString = new ConfigurationProperty("sqlConnectionString", typeof(string), #if FEATURE_PAL // FEATURE_PAL does not enable SessionStateModule "data source=localhost;Integrated Security=SSPI", #else // FEATURE_PAL SessionStateModule.SQL_CONNECTION_STRING_DEFAULT, #endif // FEATURE_PAL ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propSqlCommandTimeout = new ConfigurationProperty("sqlCommandTimeout", typeof(TimeSpan), #if FEATURE_PAL // FEATURE_PAL does not enable SqlSessionStateStore TimeSpan.FromSeconds(1800), #else // FEATURE_PAL TimeSpan.FromSeconds((long) SqlSessionStateStore.SQL_COMMAND_TIMEOUT_DEFAULT), #endif // FEATURE_PAL StdValidatorsAndConverters.TimeSpanSecondsOrInfiniteConverter, null, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propCustomProvider = new ConfigurationProperty("customProvider", typeof(string), String.Empty, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propCookieless = new ConfigurationProperty("cookieless", typeof(string), SessionIDManager.COOKIEMODE_DEFAULT.ToString(), ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propCookieName = new ConfigurationProperty("cookieName", typeof(string), SessionIDManager.SESSION_COOKIE_DEFAULT, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propTimeout = new ConfigurationProperty("timeout", typeof(TimeSpan), TimeSpan.FromMinutes((long)SessionStateModule.TIMEOUT_DEFAULT), StdValidatorsAndConverters.TimeSpanMinutesOrInfiniteConverter, new TimeSpanValidator(TimeSpan.FromMinutes(1), TimeSpan.MaxValue), ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propAllowCustomSqlDatabase = new ConfigurationProperty("allowCustomSqlDatabase", typeof(bool), false, ConfigurationPropertyOptions.None); // private static readonly ConfigurationProperty _propLockAttributes = // new ConfigurationProperty("lockAttributes", // typeof(string), // "", // ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propProviders = new ConfigurationProperty("providers", typeof(ProviderSettingsCollection), null, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propRegenerateExpiredSessionId = new ConfigurationProperty("regenerateExpiredSessionId", typeof(bool), true, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propPartitionResolverType = new ConfigurationProperty("partitionResolverType", typeof(string), String.Empty, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propUseHostingIdentity = new ConfigurationProperty("useHostingIdentity", typeof(bool), true, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propSessionIDManagerType = new ConfigurationProperty("sessionIDManagerType", typeof(string), String.Empty, ConfigurationPropertyOptions.None); private HttpCookieMode cookielessCache = SessionIDManager.COOKIEMODE_DEFAULT; private bool cookielessCached = false; private bool regenerateExpiredSessionIdCache = false; private bool regenerateExpiredSessionIdCached = false; static SessionStateSection() { // Property initialization _properties = new ConfigurationPropertyCollection(); _properties.Add(_propMode); _properties.Add(_propStateConnectionString); _properties.Add(_propStateNetworkTimeout); _properties.Add(_propSqlConnectionString); _properties.Add(_propSqlCommandTimeout); _properties.Add(_propCustomProvider); _properties.Add(_propCookieless); _properties.Add(_propCookieName); _properties.Add(_propTimeout); _properties.Add(_propAllowCustomSqlDatabase); // _properties.Add(_propLockAttributes); _properties.Add(_propProviders); _properties.Add(_propRegenerateExpiredSessionId); _properties.Add(_propPartitionResolverType); _properties.Add(_propUseHostingIdentity); _properties.Add(_propSessionIDManagerType); } public SessionStateSection() { } protected override ConfigurationPropertyCollection Properties { get { return _properties; } } [ConfigurationProperty("mode", DefaultValue = SessionStateModule.MODE_DEFAULT)] public SessionStateMode Mode { get { return (SessionStateMode)base[_propMode]; } set { base[_propMode] = value; } } [ConfigurationProperty("stateConnectionString", DefaultValue = SessionStateModule.STATE_CONNECTION_STRING_DEFAULT)] public string StateConnectionString { get { return (string)base[_propStateConnectionString]; } set { base[_propStateConnectionString] = value; } } [ConfigurationProperty("stateNetworkTimeout", DefaultValue = "00:00:10")] [TypeConverter(typeof(TimeSpanSecondsOrInfiniteConverter))] public TimeSpan StateNetworkTimeout { get { return (TimeSpan)base[_propStateNetworkTimeout]; } set { base[_propStateNetworkTimeout] = value; } } [ConfigurationProperty("sqlConnectionString", DefaultValue = SessionStateModule.SQL_CONNECTION_STRING_DEFAULT)] public string SqlConnectionString { get { return (string)base[_propSqlConnectionString]; } set { base[_propSqlConnectionString] = value; } } [ConfigurationProperty("sqlCommandTimeout", DefaultValue = "00:00:30")] [TypeConverter(typeof(TimeSpanSecondsOrInfiniteConverter))] public TimeSpan SqlCommandTimeout { get { return (TimeSpan)base[_propSqlCommandTimeout]; } set { base[_propSqlCommandTimeout] = value; } } [ConfigurationProperty("customProvider", DefaultValue = "")] public string CustomProvider { get { return (string)base[_propCustomProvider]; } set { base[_propCustomProvider] = value; } } [ConfigurationProperty("cookieless")] public HttpCookieMode Cookieless { get { if (cookielessCached == false) { cookielessCache = ConvertToCookieMode((string)base[_propCookieless]); cookielessCached = true; } return cookielessCache; } set { base[_propCookieless] = value.ToString(); cookielessCache = value; } } [ConfigurationProperty("cookieName", DefaultValue = SessionIDManager.SESSION_COOKIE_DEFAULT)] public string CookieName { get { return (string)base[_propCookieName]; } set { base[_propCookieName] = value; } } [ConfigurationProperty("timeout", DefaultValue = "00:20:00")] [TypeConverter(typeof(TimeSpanMinutesOrInfiniteConverter))] [TimeSpanValidator(MinValueString = "00:01:00", MaxValueString = TimeSpanValidatorAttribute.TimeSpanMaxValue)] public TimeSpan Timeout { get { return (TimeSpan)base[_propTimeout]; } set { base[_propTimeout] = value; } } [ConfigurationProperty("allowCustomSqlDatabase", DefaultValue = false)] public bool AllowCustomSqlDatabase { get { return (bool)base[_propAllowCustomSqlDatabase]; } set { base[_propAllowCustomSqlDatabase] = value; } } [ConfigurationProperty("regenerateExpiredSessionId", DefaultValue = true)] public bool RegenerateExpiredSessionId { get { if (regenerateExpiredSessionIdCached == false) { regenerateExpiredSessionIdCache = (bool)base[_propRegenerateExpiredSessionId]; regenerateExpiredSessionIdCached = true; } return regenerateExpiredSessionIdCache; } set { base[_propRegenerateExpiredSessionId] = value; regenerateExpiredSessionIdCache = value; } } #if DONTCOMPILE [ConfigurationProperty("lockAttributes", DefaultValue = "")] public string LockAttributes { get { return (string)base[_propLockAttributes]; } set { // base.LockedAttributes.SetFromList(value); // keep the internal list in sync base[_propLockAttributes] = value; } } #endif [ConfigurationProperty("providers")] public ProviderSettingsCollection Providers { get { return (ProviderSettingsCollection)base[_propProviders]; } } [ConfigurationProperty("partitionResolverType", DefaultValue = "")] public string PartitionResolverType { get { return (string)base[_propPartitionResolverType]; } set { base[_propPartitionResolverType] = value; } } [ConfigurationProperty("useHostingIdentity", DefaultValue = true)] public bool UseHostingIdentity { get { return (bool)base[_propUseHostingIdentity]; } set { base[_propUseHostingIdentity] = value; } } [ConfigurationProperty("sessionIDManagerType", DefaultValue = "")] public string SessionIDManagerType { get { return (string)base[_propSessionIDManagerType]; } set { base[_propSessionIDManagerType] = value; } } HttpCookieMode ConvertToCookieMode(string s) { if (s == "true") { return HttpCookieMode.UseUri; } else if (s == "false") { return HttpCookieMode.UseCookies; } else { int iTemp = 0; Type enumType = typeof(HttpCookieMode); if (Enum.IsDefined(enumType, s)) { iTemp = (int)Enum.Parse(enumType, s); } else { // if not null and not defined throw error string names = "true, false"; foreach (string name in Enum.GetNames(enumType)) { if (names == null) { names = name; } else { names += ", " + name; } } throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_enum_attribute, "cookieless", names), ElementInformation.Properties["cookieless"].Source, ElementInformation.Properties["cookieless"].LineNumber); } return (HttpCookieMode)iTemp; } } protected override void PostDeserialize() { ConvertToCookieMode((string)base[_propCookieless]); } protected override ConfigurationElementProperty ElementProperty { get { return s_elemProperty; } } private static void Validate(object value) { if (value == null) { throw new ArgumentNullException("sessionState"); } Debug.Assert(value is SessionStateSection); SessionStateSection elem = (SessionStateSection)value; if (elem.Timeout.TotalMinutes > SessionStateModule.MAX_CACHE_BASED_TIMEOUT_MINUTES && (elem.Mode == SessionStateMode.InProc || elem.Mode == SessionStateMode.StateServer)) { throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_cache_based_session_timeout), elem.ElementInformation.Properties["timeout"].Source, elem.ElementInformation.Properties["timeout"].LineNumber); } } } } // 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
- ResourceProviderFactory.cs
- EncryptedData.cs
- CodeSubDirectory.cs
- DefaultProxySection.cs
- SecurityTokenSerializer.cs
- Crc32.cs
- PartialList.cs
- FlagsAttribute.cs
- WebServiceTypeData.cs
- XmlQueryOutput.cs
- WindowsScrollBar.cs
- ComponentDispatcher.cs
- ReverseInheritProperty.cs
- BlurBitmapEffect.cs
- GridViewColumn.cs
- StatusBarPanelClickEvent.cs
- AuthenticationServiceManager.cs
- QuotedPrintableStream.cs
- UInt64.cs
- DependencyPropertyAttribute.cs
- HttpSessionStateBase.cs
- SqlFunctionAttribute.cs
- InputLanguageCollection.cs
- ButtonBase.cs
- WindowsIPAddress.cs
- CanonicalFormWriter.cs
- PageVisual.cs
- RangeValidator.cs
- UTF32Encoding.cs
- MediaScriptCommandRoutedEventArgs.cs
- DateTimeFormat.cs
- Light.cs
- FileDetails.cs
- UserInitiatedNavigationPermission.cs
- HWStack.cs
- XmlConvert.cs
- GeneratedCodeAttribute.cs
- StackBuilderSink.cs
- ProfileManager.cs
- MarkupWriter.cs
- ContextProperty.cs
- DataServiceKeyAttribute.cs
- TypeExtensions.cs
- ProfessionalColors.cs
- DiscardableAttribute.cs
- UserControlParser.cs
- InkCanvasSelectionAdorner.cs
- WebDisplayNameAttribute.cs
- DataGridViewLinkColumn.cs
- ProfileGroupSettingsCollection.cs
- EpmCustomContentDeSerializer.cs
- DataControlFieldHeaderCell.cs
- DataTableNewRowEvent.cs
- HtmlString.cs
- UnitySerializationHolder.cs
- GestureRecognizer.cs
- NamespaceEmitter.cs
- FunctionImportElement.cs
- glyphs.cs
- LoggedException.cs
- COAUTHINFO.cs
- EncryptedPackage.cs
- CacheOutputQuery.cs
- DependencyObjectPropertyDescriptor.cs
- ResourcesChangeInfo.cs
- AndMessageFilterTable.cs
- SymmetricKeyWrap.cs
- COM2PropertyPageUITypeConverter.cs
- ListSurrogate.cs
- DataServiceQueryProvider.cs
- QilDataSource.cs
- NullableIntMinMaxAggregationOperator.cs
- DataGridSortingEventArgs.cs
- DocumentScope.cs
- ComponentDispatcher.cs
- SuppressMessageAttribute.cs
- StateItem.cs
- EntityCommandDefinition.cs
- WS2007HttpBinding.cs
- ObjectHandle.cs
- VersionedStreamOwner.cs
- SeparatorAutomationPeer.cs
- InfoCardServiceInstallComponent.cs
- CellConstant.cs
- SqlDataAdapter.cs
- SchemaCollectionCompiler.cs
- updateconfighost.cs
- SeekStoryboard.cs
- MaskedTextBox.cs
- DataStorage.cs
- ReferentialConstraint.cs
- fixedPageContentExtractor.cs
- DecoderBestFitFallback.cs
- DependsOnAttribute.cs
- FixedPageStructure.cs
- SamlAction.cs
- OutputCacheSection.cs
- TraceHandlerErrorFormatter.cs
- CommandExpr.cs
- TextBoxView.cs