Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Net / System / Net / Configuration / RequestCachingSection.cs / 1 / RequestCachingSection.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Net.Configuration { using Microsoft.Win32; using System.Configuration; using System.Globalization; using System.Net.Cache; using System.Threading; public sealed class RequestCachingSection : ConfigurationSection { public RequestCachingSection() { this.properties.Add(this.disableAllCaching); this.properties.Add(this.defaultPolicyLevel); this.properties.Add(this.isPrivateCache); this.properties.Add(this.defaultHttpCachePolicy); this.properties.Add(this.defaultFtpCachePolicy); this.properties.Add(this.unspecifiedMaximumAge); } [ConfigurationProperty(ConfigurationStrings.DefaultHttpCachePolicy)] public HttpCachePolicyElement DefaultHttpCachePolicy { get { return (HttpCachePolicyElement)this[this.defaultHttpCachePolicy]; } } [ConfigurationProperty(ConfigurationStrings.DefaultFtpCachePolicy)] public FtpCachePolicyElement DefaultFtpCachePolicy { get { return (FtpCachePolicyElement)this[this.defaultFtpCachePolicy]; } } [ConfigurationProperty(ConfigurationStrings.DefaultPolicyLevel, DefaultValue=(RequestCacheLevel) RequestCacheLevel.BypassCache)] public RequestCacheLevel DefaultPolicyLevel { get { return (RequestCacheLevel)this[this.defaultPolicyLevel]; } set { this[this.defaultPolicyLevel] = value; } } #if !FEATURE_PAL // FEATURE_PAL - Caching is not supported by default [ConfigurationProperty(ConfigurationStrings.DisableAllCaching, DefaultValue=false)] #else // !FEATURE_PAL [ConfigurationProperty(ConfigurationStrings.DisableAllCaching, DefaultValue=true)] #endif // !FEATURE_PAL public bool DisableAllCaching { get { return (bool)this[this.disableAllCaching]; } set { this[this.disableAllCaching] = value; } } [ConfigurationProperty(ConfigurationStrings.IsPrivateCache, DefaultValue=true)] public bool IsPrivateCache { get { return (bool)this[this.isPrivateCache]; } set { this[this.isPrivateCache] = value; } } [ConfigurationProperty(ConfigurationStrings.UnspecifiedMaximumAge, DefaultValue = "1.00:00:00")] public TimeSpan UnspecifiedMaximumAge { get { return (TimeSpan)this[this.unspecifiedMaximumAge]; } set { this[this.unspecifiedMaximumAge] = value; } } // // If DisableAllCaching is set once to true it will not change. // protected override void DeserializeElement(System.Xml.XmlReader reader, bool serializeCollectionKey) { bool tempDisableAllCaching = this.DisableAllCaching; base.DeserializeElement(reader, serializeCollectionKey); if (tempDisableAllCaching) { this.DisableAllCaching = true; } } protected override void PostDeserialize() { // Perf optimization. If the configuration is coming from machine.config // It is safe and we don't need to check for permissions. if (EvaluationContext.IsMachineLevel) return; try { ExceptionHelper.WebPermissionUnrestricted.Demand(); } catch (Exception exception) { throw new ConfigurationErrorsException( SR.GetString(SR.net_config_section_permission, ConfigurationStrings.RequestCachingSectionName), exception); } } protected override ConfigurationPropertyCollection Properties { get { return this.properties; } } ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection(); readonly ConfigurationProperty defaultHttpCachePolicy = new ConfigurationProperty(ConfigurationStrings.DefaultHttpCachePolicy, typeof(HttpCachePolicyElement), null, ConfigurationPropertyOptions.None); readonly ConfigurationProperty defaultFtpCachePolicy = new ConfigurationProperty(ConfigurationStrings.DefaultFtpCachePolicy, typeof(FtpCachePolicyElement), null, ConfigurationPropertyOptions.None); readonly ConfigurationProperty defaultPolicyLevel = new ConfigurationProperty(ConfigurationStrings.DefaultPolicyLevel, typeof(RequestCacheLevel), RequestCacheLevel.BypassCache, ConfigurationPropertyOptions.None); readonly ConfigurationProperty disableAllCaching = #if !FEATURE_PAL // FEATURE_PAL - Caching is not supported by default new ConfigurationProperty(ConfigurationStrings.DisableAllCaching, typeof(bool), false, ConfigurationPropertyOptions.None); #else // !FEATURE_PAL new ConfigurationProperty(ConfigurationStrings.DisableAllCaching, typeof(bool), true, ConfigurationPropertyOptions.None); #endif // !FEATURE_PAL readonly ConfigurationProperty isPrivateCache = new ConfigurationProperty(ConfigurationStrings.IsPrivateCache, typeof(bool), true, ConfigurationPropertyOptions.None); readonly ConfigurationProperty unspecifiedMaximumAge = new ConfigurationProperty(ConfigurationStrings.UnspecifiedMaximumAge, typeof(TimeSpan), TimeSpan.FromDays(1), ConfigurationPropertyOptions.None); } internal sealed class RequestCachingSectionInternal { private RequestCachingSectionInternal() { } internal RequestCachingSectionInternal(RequestCachingSection section) { #if !FEATURE_PAL // IE caching //ROTORTODO: Review // IE caching //CORIOLISTODO: Review // IE caching if (!section.DisableAllCaching) { this.defaultCachePolicy = new RequestCachePolicy(section.DefaultPolicyLevel); // default should be RequestCacheLevel.BypassCache this.isPrivateCache = section.IsPrivateCache; this.unspecifiedMaximumAge = section.UnspecifiedMaximumAge; //default should be TimeSpan.FromDays(1) } else { this.disableAllCaching = true; } this.httpRequestCacheValidator = new HttpRequestCacheValidator(false, this.UnspecifiedMaximumAge); this.ftpRequestCacheValidator = new FtpRequestCacheValidator(false, this.UnspecifiedMaximumAge); this.defaultCache = new Microsoft.Win32.WinInetCache(this.IsPrivateCache, true, true); if (section.DisableAllCaching) return; HttpCachePolicyElement httpPolicy = section.DefaultHttpCachePolicy; if (httpPolicy.WasReadFromConfig) { if (httpPolicy.PolicyLevel == HttpRequestCacheLevel.Default) { HttpCacheAgeControl cacheAgeControl = (httpPolicy.MinimumFresh != TimeSpan.MinValue ? HttpCacheAgeControl.MaxAgeAndMinFresh : HttpCacheAgeControl.MaxAgeAndMaxStale); this.defaultHttpCachePolicy = new HttpRequestCachePolicy(cacheAgeControl, httpPolicy.MaximumAge, (httpPolicy.MinimumFresh != TimeSpan.MinValue ? httpPolicy.MinimumFresh : httpPolicy.MaximumStale)); } else { this.defaultHttpCachePolicy = new HttpRequestCachePolicy(httpPolicy.PolicyLevel); } } #else //!FEATURE_PAL // IE caching #if CORIOLIS if (section.DisableAllCaching) { this.httpRequestCacheValidator = new HttpRequestCacheValidator(false, this.UnspecifiedMaximumAge); this.disableAllCaching = true; } else { // Caching needs to be disabled in the configuration since Coriolis // does not support it. // This is a validity check, that it is actually disabled. throw new NotImplementedException("ROTORTODO - RequestCaching - IE caching"); } #else // CORIOLIS this.httpRequestCacheValidator = new HttpRequestCacheValidator(false, this.UnspecifiedMaximumAge); this.disableAllCaching = true; #endif #endif //!FEATURE_PAL // IE caching FtpCachePolicyElement ftpPolicy = section.DefaultFtpCachePolicy; if (ftpPolicy.WasReadFromConfig) { this.defaultFtpCachePolicy = new RequestCachePolicy(ftpPolicy.PolicyLevel); } } internal static object ClassSyncObject { get { if (classSyncObject == null) { object o = new object(); Interlocked.CompareExchange(ref classSyncObject, o, null); } return classSyncObject; } } internal bool DisableAllCaching { get { return this.disableAllCaching; } } internal RequestCache DefaultCache { get { return this.defaultCache; } } internal RequestCachePolicy DefaultCachePolicy { get { return this.defaultCachePolicy; } } internal bool IsPrivateCache { get { return this.isPrivateCache; } } internal TimeSpan UnspecifiedMaximumAge { get { return this.unspecifiedMaximumAge; } } internal HttpRequestCachePolicy DefaultHttpCachePolicy { get { return this.defaultHttpCachePolicy; } } internal RequestCachePolicy DefaultFtpCachePolicy { get { return this.defaultFtpCachePolicy; } } internal HttpRequestCacheValidator DefaultHttpValidator { get { return this.httpRequestCacheValidator; } } internal FtpRequestCacheValidator DefaultFtpValidator { get { return this.ftpRequestCacheValidator; } } static internal RequestCachingSectionInternal GetSection() { lock (RequestCachingSectionInternal.ClassSyncObject) { RequestCachingSection section = PrivilegedConfigurationManager.GetSection(ConfigurationStrings.RequestCachingSectionPath) as RequestCachingSection; if (section == null) return null; try { return new RequestCachingSectionInternal(section); } catch (Exception exception) { if (NclUtilities.IsFatal(exception)) throw; throw new ConfigurationErrorsException(SR.GetString(SR.net_config_requestcaching), exception); } catch { throw new ConfigurationErrorsException(SR.GetString(SR.net_config_requestcaching), new Exception(SR.GetString(SR.net_nonClsCompliantException))); } } } static object classSyncObject; RequestCache defaultCache; HttpRequestCachePolicy defaultHttpCachePolicy; RequestCachePolicy defaultFtpCachePolicy; RequestCachePolicy defaultCachePolicy; bool disableAllCaching; HttpRequestCacheValidator httpRequestCacheValidator; FtpRequestCacheValidator ftpRequestCacheValidator; bool isPrivateCache; TimeSpan unspecifiedMaximumAge; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Net.Configuration { using Microsoft.Win32; using System.Configuration; using System.Globalization; using System.Net.Cache; using System.Threading; public sealed class RequestCachingSection : ConfigurationSection { public RequestCachingSection() { this.properties.Add(this.disableAllCaching); this.properties.Add(this.defaultPolicyLevel); this.properties.Add(this.isPrivateCache); this.properties.Add(this.defaultHttpCachePolicy); this.properties.Add(this.defaultFtpCachePolicy); this.properties.Add(this.unspecifiedMaximumAge); } [ConfigurationProperty(ConfigurationStrings.DefaultHttpCachePolicy)] public HttpCachePolicyElement DefaultHttpCachePolicy { get { return (HttpCachePolicyElement)this[this.defaultHttpCachePolicy]; } } [ConfigurationProperty(ConfigurationStrings.DefaultFtpCachePolicy)] public FtpCachePolicyElement DefaultFtpCachePolicy { get { return (FtpCachePolicyElement)this[this.defaultFtpCachePolicy]; } } [ConfigurationProperty(ConfigurationStrings.DefaultPolicyLevel, DefaultValue=(RequestCacheLevel) RequestCacheLevel.BypassCache)] public RequestCacheLevel DefaultPolicyLevel { get { return (RequestCacheLevel)this[this.defaultPolicyLevel]; } set { this[this.defaultPolicyLevel] = value; } } #if !FEATURE_PAL // FEATURE_PAL - Caching is not supported by default [ConfigurationProperty(ConfigurationStrings.DisableAllCaching, DefaultValue=false)] #else // !FEATURE_PAL [ConfigurationProperty(ConfigurationStrings.DisableAllCaching, DefaultValue=true)] #endif // !FEATURE_PAL public bool DisableAllCaching { get { return (bool)this[this.disableAllCaching]; } set { this[this.disableAllCaching] = value; } } [ConfigurationProperty(ConfigurationStrings.IsPrivateCache, DefaultValue=true)] public bool IsPrivateCache { get { return (bool)this[this.isPrivateCache]; } set { this[this.isPrivateCache] = value; } } [ConfigurationProperty(ConfigurationStrings.UnspecifiedMaximumAge, DefaultValue = "1.00:00:00")] public TimeSpan UnspecifiedMaximumAge { get { return (TimeSpan)this[this.unspecifiedMaximumAge]; } set { this[this.unspecifiedMaximumAge] = value; } } // // If DisableAllCaching is set once to true it will not change. // protected override void DeserializeElement(System.Xml.XmlReader reader, bool serializeCollectionKey) { bool tempDisableAllCaching = this.DisableAllCaching; base.DeserializeElement(reader, serializeCollectionKey); if (tempDisableAllCaching) { this.DisableAllCaching = true; } } protected override void PostDeserialize() { // Perf optimization. If the configuration is coming from machine.config // It is safe and we don't need to check for permissions. if (EvaluationContext.IsMachineLevel) return; try { ExceptionHelper.WebPermissionUnrestricted.Demand(); } catch (Exception exception) { throw new ConfigurationErrorsException( SR.GetString(SR.net_config_section_permission, ConfigurationStrings.RequestCachingSectionName), exception); } } protected override ConfigurationPropertyCollection Properties { get { return this.properties; } } ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection(); readonly ConfigurationProperty defaultHttpCachePolicy = new ConfigurationProperty(ConfigurationStrings.DefaultHttpCachePolicy, typeof(HttpCachePolicyElement), null, ConfigurationPropertyOptions.None); readonly ConfigurationProperty defaultFtpCachePolicy = new ConfigurationProperty(ConfigurationStrings.DefaultFtpCachePolicy, typeof(FtpCachePolicyElement), null, ConfigurationPropertyOptions.None); readonly ConfigurationProperty defaultPolicyLevel = new ConfigurationProperty(ConfigurationStrings.DefaultPolicyLevel, typeof(RequestCacheLevel), RequestCacheLevel.BypassCache, ConfigurationPropertyOptions.None); readonly ConfigurationProperty disableAllCaching = #if !FEATURE_PAL // FEATURE_PAL - Caching is not supported by default new ConfigurationProperty(ConfigurationStrings.DisableAllCaching, typeof(bool), false, ConfigurationPropertyOptions.None); #else // !FEATURE_PAL new ConfigurationProperty(ConfigurationStrings.DisableAllCaching, typeof(bool), true, ConfigurationPropertyOptions.None); #endif // !FEATURE_PAL readonly ConfigurationProperty isPrivateCache = new ConfigurationProperty(ConfigurationStrings.IsPrivateCache, typeof(bool), true, ConfigurationPropertyOptions.None); readonly ConfigurationProperty unspecifiedMaximumAge = new ConfigurationProperty(ConfigurationStrings.UnspecifiedMaximumAge, typeof(TimeSpan), TimeSpan.FromDays(1), ConfigurationPropertyOptions.None); } internal sealed class RequestCachingSectionInternal { private RequestCachingSectionInternal() { } internal RequestCachingSectionInternal(RequestCachingSection section) { #if !FEATURE_PAL // IE caching //ROTORTODO: Review // IE caching //CORIOLISTODO: Review // IE caching if (!section.DisableAllCaching) { this.defaultCachePolicy = new RequestCachePolicy(section.DefaultPolicyLevel); // default should be RequestCacheLevel.BypassCache this.isPrivateCache = section.IsPrivateCache; this.unspecifiedMaximumAge = section.UnspecifiedMaximumAge; //default should be TimeSpan.FromDays(1) } else { this.disableAllCaching = true; } this.httpRequestCacheValidator = new HttpRequestCacheValidator(false, this.UnspecifiedMaximumAge); this.ftpRequestCacheValidator = new FtpRequestCacheValidator(false, this.UnspecifiedMaximumAge); this.defaultCache = new Microsoft.Win32.WinInetCache(this.IsPrivateCache, true, true); if (section.DisableAllCaching) return; HttpCachePolicyElement httpPolicy = section.DefaultHttpCachePolicy; if (httpPolicy.WasReadFromConfig) { if (httpPolicy.PolicyLevel == HttpRequestCacheLevel.Default) { HttpCacheAgeControl cacheAgeControl = (httpPolicy.MinimumFresh != TimeSpan.MinValue ? HttpCacheAgeControl.MaxAgeAndMinFresh : HttpCacheAgeControl.MaxAgeAndMaxStale); this.defaultHttpCachePolicy = new HttpRequestCachePolicy(cacheAgeControl, httpPolicy.MaximumAge, (httpPolicy.MinimumFresh != TimeSpan.MinValue ? httpPolicy.MinimumFresh : httpPolicy.MaximumStale)); } else { this.defaultHttpCachePolicy = new HttpRequestCachePolicy(httpPolicy.PolicyLevel); } } #else //!FEATURE_PAL // IE caching #if CORIOLIS if (section.DisableAllCaching) { this.httpRequestCacheValidator = new HttpRequestCacheValidator(false, this.UnspecifiedMaximumAge); this.disableAllCaching = true; } else { // Caching needs to be disabled in the configuration since Coriolis // does not support it. // This is a validity check, that it is actually disabled. throw new NotImplementedException("ROTORTODO - RequestCaching - IE caching"); } #else // CORIOLIS this.httpRequestCacheValidator = new HttpRequestCacheValidator(false, this.UnspecifiedMaximumAge); this.disableAllCaching = true; #endif #endif //!FEATURE_PAL // IE caching FtpCachePolicyElement ftpPolicy = section.DefaultFtpCachePolicy; if (ftpPolicy.WasReadFromConfig) { this.defaultFtpCachePolicy = new RequestCachePolicy(ftpPolicy.PolicyLevel); } } internal static object ClassSyncObject { get { if (classSyncObject == null) { object o = new object(); Interlocked.CompareExchange(ref classSyncObject, o, null); } return classSyncObject; } } internal bool DisableAllCaching { get { return this.disableAllCaching; } } internal RequestCache DefaultCache { get { return this.defaultCache; } } internal RequestCachePolicy DefaultCachePolicy { get { return this.defaultCachePolicy; } } internal bool IsPrivateCache { get { return this.isPrivateCache; } } internal TimeSpan UnspecifiedMaximumAge { get { return this.unspecifiedMaximumAge; } } internal HttpRequestCachePolicy DefaultHttpCachePolicy { get { return this.defaultHttpCachePolicy; } } internal RequestCachePolicy DefaultFtpCachePolicy { get { return this.defaultFtpCachePolicy; } } internal HttpRequestCacheValidator DefaultHttpValidator { get { return this.httpRequestCacheValidator; } } internal FtpRequestCacheValidator DefaultFtpValidator { get { return this.ftpRequestCacheValidator; } } static internal RequestCachingSectionInternal GetSection() { lock (RequestCachingSectionInternal.ClassSyncObject) { RequestCachingSection section = PrivilegedConfigurationManager.GetSection(ConfigurationStrings.RequestCachingSectionPath) as RequestCachingSection; if (section == null) return null; try { return new RequestCachingSectionInternal(section); } catch (Exception exception) { if (NclUtilities.IsFatal(exception)) throw; throw new ConfigurationErrorsException(SR.GetString(SR.net_config_requestcaching), exception); } catch { throw new ConfigurationErrorsException(SR.GetString(SR.net_config_requestcaching), new Exception(SR.GetString(SR.net_nonClsCompliantException))); } } } static object classSyncObject; RequestCache defaultCache; HttpRequestCachePolicy defaultHttpCachePolicy; RequestCachePolicy defaultFtpCachePolicy; RequestCachePolicy defaultCachePolicy; bool disableAllCaching; HttpRequestCacheValidator httpRequestCacheValidator; FtpRequestCacheValidator ftpRequestCacheValidator; bool isPrivateCache; TimeSpan unspecifiedMaximumAge; } } // 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
- NumberSubstitution.cs
- TypeConstant.cs
- TransformValueSerializer.cs
- CalloutQueueItem.cs
- EntityCommandExecutionException.cs
- EnumValAlphaComparer.cs
- ArraySet.cs
- _ProxyRegBlob.cs
- TreeViewTemplateSelector.cs
- ClassicBorderDecorator.cs
- DEREncoding.cs
- SiteMap.cs
- FullTextState.cs
- SerializationFieldInfo.cs
- CodeCastExpression.cs
- PolygonHotSpot.cs
- MetadataItem.cs
- VirtualizingStackPanel.cs
- SpeechSeg.cs
- Events.cs
- EntityClassGenerator.cs
- ConfigurationElementCollection.cs
- MarkupCompilePass1.cs
- Identity.cs
- MenuItemStyleCollection.cs
- TransferRequestHandler.cs
- FixedSOMElement.cs
- ZipIOCentralDirectoryFileHeader.cs
- SqlConnectionHelper.cs
- SiteMapSection.cs
- TimeSpanValidatorAttribute.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- MetabaseSettingsIis7.cs
- xamlnodes.cs
- UIElement.cs
- StorageAssociationSetMapping.cs
- BaseInfoTable.cs
- TableParagraph.cs
- HashLookup.cs
- PopupRootAutomationPeer.cs
- ParamArrayAttribute.cs
- CompilationUtil.cs
- X509ChainElement.cs
- HotSpotCollectionEditor.cs
- XPathAncestorIterator.cs
- OracleEncoding.cs
- ExplicitDiscriminatorMap.cs
- ReadOnlyDictionary.cs
- TextChange.cs
- AnnotationResourceChangedEventArgs.cs
- WebPartTransformer.cs
- BezierSegment.cs
- Visual3D.cs
- EntitySetDataBindingList.cs
- OptimisticConcurrencyException.cs
- MeasurementDCInfo.cs
- DoubleLinkList.cs
- SQLMoneyStorage.cs
- CurrentChangingEventArgs.cs
- PathSegment.cs
- __Filters.cs
- BitmapVisualManager.cs
- _TransmitFileOverlappedAsyncResult.cs
- storepermissionattribute.cs
- DependencyPropertyConverter.cs
- StartUpEventArgs.cs
- ProcessProtocolHandler.cs
- LinkedDataMemberFieldEditor.cs
- ACL.cs
- BamlBinaryWriter.cs
- RelatedPropertyManager.cs
- BufferBuilder.cs
- StrokeNodeOperations2.cs
- XmlSchemaAttributeGroupRef.cs
- WmlSelectionListAdapter.cs
- XamlSerializerUtil.cs
- OracleTimeSpan.cs
- QueueException.cs
- ContextInformation.cs
- AttachedPropertiesService.cs
- Helpers.cs
- DateTimeUtil.cs
- MemoryFailPoint.cs
- CodePageUtils.cs
- EpmTargetPathSegment.cs
- embossbitmapeffect.cs
- FormViewModeEventArgs.cs
- LinqDataSourceValidationException.cs
- InputDevice.cs
- SettingsProperty.cs
- ScrollProviderWrapper.cs
- MeasurementDCInfo.cs
- SizeKeyFrameCollection.cs
- BezierSegment.cs
- ToolStripItem.cs
- InkCanvasSelectionAdorner.cs
- PriorityItem.cs
- SimplePropertyEntry.cs
- FrameworkRichTextComposition.cs
- base64Transforms.cs