Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / HttpCacheVaryByContentEncodings.cs / 1 / HttpCacheVaryByContentEncodings.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* HttpCacheVaryByContentEncodings
*
* Copyright (c) 1998 Microsoft Corporation
*/
namespace System.Web {
using System.Text;
using System.Runtime.InteropServices;
using System.Web.Util;
using System.Security.Permissions;
///
/// Provides a type-safe way to vary by Content-Encoding.
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public sealed class HttpCacheVaryByContentEncodings {
String[] _contentEncodings;
bool _isModified;
internal HttpCacheVaryByContentEncodings() {
Reset();
}
internal void Reset() {
_isModified = false;
_contentEncodings = null;
}
/*
* Reset based on content encodings.
*/
internal void ResetFromContentEncodings(String[] contentEncodings) {
Reset();
if (contentEncodings != null) {
_isModified = true;
_contentEncodings = new String[contentEncodings.Length];
for (int i = 0; i < contentEncodings.Length; i++) {
_contentEncodings[i] = contentEncodings[i];
}
}
}
// the response is not cacheable if we're varying by content encoding
// and the content-encoding header is not one of the encodings that we're
// varying by
internal bool IsCacheableEncoding(string coding) {
// return true if we are not varying by content encoding.
if (_contentEncodings == null) {
return true;
}
// return true if there is no Content-Encoding header
if (coding == null) {
return true;
}
// return true if the Content-Encoding header is listed
for (int i = 0; i < _contentEncodings.Length; i++) {
if (_contentEncodings[i] == coding) {
return true;
}
}
// return false if the Content-Encoding header is not listed
return false;
}
internal bool IsModified() {
return _isModified;
}
internal String[] GetContentEncodings() {
return _contentEncodings;
}
//
// Public methods and properties
//
///
/// Default property.
/// Indexed property indicating that a cache should (or should not) vary according
/// to a Content-Encoding.
///
public bool this[String contentEncoding]
{
get {
if (String.IsNullOrEmpty(contentEncoding)) {
throw new ArgumentNullException(SR.GetString(SR.Parameter_NullOrEmpty, "contentEncoding"));
}
if (_contentEncodings == null) {
return false;
}
for(int i = 0; i < _contentEncodings.Length; i++) {
if (_contentEncodings[i] == contentEncoding) {
return true;
}
}
return false;
}
set {
if (String.IsNullOrEmpty(contentEncoding)) {
throw new ArgumentNullException(SR.GetString(SR.Parameter_NullOrEmpty, "contentEncoding"));
}
// if someone enabled it, don't allow someone else to disable it.
if (!value) {
return;
}
_isModified = true;
if (_contentEncodings != null) {
string[] contentEncodings = new String[_contentEncodings.Length + 1];
for (int i = 0; i < _contentEncodings.Length; i++) {
contentEncodings[i] = _contentEncodings[i];
}
contentEncodings[contentEncodings.Length - 1] = contentEncoding;
_contentEncodings = contentEncodings;
return;
}
_contentEncodings = new String[1];
_contentEncodings[0] = contentEncoding;
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SqlUserDefinedAggregateAttribute.cs
- ReadOnlyMetadataCollection.cs
- MobileControlPersister.cs
- Range.cs
- BoundingRectTracker.cs
- RowToParametersTransformer.cs
- HMACRIPEMD160.cs
- StrongNameKeyPair.cs
- BufferBuilder.cs
- Stopwatch.cs
- ImagingCache.cs
- NonValidatingSecurityTokenAuthenticator.cs
- VirtualStackFrame.cs
- ObjectViewFactory.cs
- ColumnResizeAdorner.cs
- ContentElementAutomationPeer.cs
- ContentWrapperAttribute.cs
- InstanceLockLostException.cs
- WasEndpointConfigContainer.cs
- XmlC14NWriter.cs
- SchemaInfo.cs
- TextViewSelectionProcessor.cs
- DynamicActionMessageFilter.cs
- SamlAttributeStatement.cs
- PointAnimationBase.cs
- MatrixValueSerializer.cs
- LinearQuaternionKeyFrame.cs
- AspProxy.cs
- CancellationToken.cs
- DbConnectionStringCommon.cs
- TimeManager.cs
- HtmlInputRadioButton.cs
- DataKeyArray.cs
- StorageEntitySetMapping.cs
- AddInPipelineAttributes.cs
- SplineQuaternionKeyFrame.cs
- SQlBooleanStorage.cs
- SectionRecord.cs
- ResourcePermissionBase.cs
- HttpServerUtilityBase.cs
- Configuration.cs
- DataTrigger.cs
- LockRecoveryTask.cs
- WsatExtendedInformation.cs
- AncillaryOps.cs
- IconConverter.cs
- Matrix3DStack.cs
- TemplateComponentConnector.cs
- DoubleMinMaxAggregationOperator.cs
- SimpleBitVector32.cs
- EnumValAlphaComparer.cs
- SimpleLine.cs
- EventLogPermissionEntry.cs
- TCEAdapterGenerator.cs
- CollectionDataContract.cs
- Decorator.cs
- WhitespaceSignificantCollectionAttribute.cs
- SqlComparer.cs
- DoubleUtil.cs
- TypeNameHelper.cs
- IsolatedStorage.cs
- SemaphoreSecurity.cs
- StrongName.cs
- ObjectAnimationBase.cs
- QueryAccessibilityHelpEvent.cs
- MarkerProperties.cs
- OperationAbortedException.cs
- PageSettings.cs
- SymmetricAlgorithm.cs
- AddressHeaderCollectionElement.cs
- MetadataProperty.cs
- AssemblyBuilderData.cs
- HttpCacheVary.cs
- SqlIdentifier.cs
- DataGridViewTopRowAccessibleObject.cs
- _Win32.cs
- SerializationStore.cs
- MSAANativeProvider.cs
- BamlRecords.cs
- EntityConnection.cs
- CodeObject.cs
- clipboard.cs
- sqlstateclientmanager.cs
- TreeViewItem.cs
- SqlRowUpdatedEvent.cs
- _HTTPDateParse.cs
- UntypedNullExpression.cs
- ParallelDesigner.cs
- WebPartDescription.cs
- StrongName.cs
- DeclaredTypeElement.cs
- Certificate.cs
- MergablePropertyAttribute.cs
- ColorConvertedBitmapExtension.cs
- Assign.cs
- UserControlBuildProvider.cs
- RenamedEventArgs.cs
- InstanceStoreQueryResult.cs
- ControlBindingsCollection.cs
- ConfigXmlCDataSection.cs