Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / Configuration / RequestCachingSection.cs / 1305376 / 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); } } } 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
- DeliveryStrategy.cs
- VerificationAttribute.cs
- WebServiceHost.cs
- OutputCacheSettingsSection.cs
- ServicePointManager.cs
- Vector3DCollection.cs
- Label.cs
- KeyboardEventArgs.cs
- CLRBindingWorker.cs
- AssertUtility.cs
- PropertyIdentifier.cs
- ImageMetadata.cs
- Location.cs
- EdmEntityTypeAttribute.cs
- ParameterToken.cs
- TemplateApplicationHelper.cs
- XmlAnyElementAttributes.cs
- HtmlInputReset.cs
- ValueTable.cs
- ObjectDataProvider.cs
- WorkflowRuntimeElement.cs
- PageRanges.cs
- BidirectionalDictionary.cs
- DirectionalLight.cs
- HtmlElementEventArgs.cs
- IssuanceLicense.cs
- SendKeys.cs
- ToolStripDropDownClosedEventArgs.cs
- XmlElementList.cs
- WebPartAddingEventArgs.cs
- FamilyTypeface.cs
- DynamicMetaObjectBinder.cs
- ColumnHeader.cs
- DataSetFieldSchema.cs
- DiscoveryClientOutputChannel.cs
- XsltConvert.cs
- ListViewInsertEventArgs.cs
- InheritanceContextChangedEventManager.cs
- PanelStyle.cs
- WindowsGraphicsWrapper.cs
- ColorTranslator.cs
- PersonalizationProvider.cs
- _SSPIWrapper.cs
- OleDbPermission.cs
- List.cs
- Semaphore.cs
- Perspective.cs
- CodeTypeParameter.cs
- AssociatedControlConverter.cs
- ProvidePropertyAttribute.cs
- TdsParserSessionPool.cs
- Facet.cs
- GenericPrincipal.cs
- ObjectListCommand.cs
- SiteIdentityPermission.cs
- FontCacheUtil.cs
- ReadOnlyCollectionBase.cs
- EncodedStreamFactory.cs
- SocketConnection.cs
- TypefaceCollection.cs
- TimerEventSubscription.cs
- MetafileHeaderWmf.cs
- XomlSerializationHelpers.cs
- CompiledWorkflowDefinitionContext.cs
- XsdBuilder.cs
- XsltCompileContext.cs
- MutexSecurity.cs
- _CookieModule.cs
- BigInt.cs
- HtmlButton.cs
- SerializationEventsCache.cs
- CounterCreationDataCollection.cs
- TlsSspiNegotiation.cs
- HttpResponseHeader.cs
- ParameterElementCollection.cs
- PathParser.cs
- SpAudioStreamWrapper.cs
- JavaScriptString.cs
- XmlWrappingReader.cs
- X509Extension.cs
- PtsPage.cs
- PngBitmapDecoder.cs
- RepeaterDataBoundAdapter.cs
- Keyboard.cs
- ProxyHelper.cs
- OpenTypeLayout.cs
- EdmItemCollection.cs
- BaseCodeDomTreeGenerator.cs
- ResolveDuplex11AsyncResult.cs
- HyperLinkStyle.cs
- CaretElement.cs
- EasingQuaternionKeyFrame.cs
- ByteFacetDescriptionElement.cs
- SliderAutomationPeer.cs
- MenuItemStyleCollection.cs
- ReadWriteObjectLock.cs
- FormatStringEditor.cs
- HttpListenerContext.cs
- SoundPlayerAction.cs
- AddInIpcChannel.cs