e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
178 lines
4.1 KiB
C#
178 lines
4.1 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="ControlCachePolicy.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
|
|
namespace System.Web.UI {
|
|
|
|
using System;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Collections;
|
|
using System.Collections.Specialized;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.Design;
|
|
using System.Globalization;
|
|
using System.Web;
|
|
using System.Web.Util;
|
|
using System.Web.UI.WebControls;
|
|
using System.Web.Caching;
|
|
using System.Security.Permissions;
|
|
|
|
public sealed class ControlCachePolicy {
|
|
|
|
private static ControlCachePolicy _cachePolicyStub = new ControlCachePolicy();
|
|
|
|
private BasePartialCachingControl _pcc;
|
|
|
|
internal ControlCachePolicy() {
|
|
}
|
|
|
|
internal ControlCachePolicy(BasePartialCachingControl pcc) {
|
|
_pcc = pcc;
|
|
}
|
|
|
|
internal static ControlCachePolicy GetCachePolicyStub() {
|
|
// Return a stub, which returns SupportsCaching==false and throws on everything else.
|
|
return _cachePolicyStub;
|
|
}
|
|
|
|
// Check whether it is valid to access properties on this object
|
|
private void CheckValidCallingContext() {
|
|
|
|
// If it's not being cached, the CachePolicy can't be used
|
|
if (_pcc == null) {
|
|
throw new HttpException(
|
|
SR.GetString(SR.UC_not_cached));
|
|
}
|
|
|
|
// Make sure it's not being used too late
|
|
if (_pcc.ControlState >= ControlState.PreRendered) {
|
|
throw new HttpException(
|
|
SR.GetString(SR.UCCachePolicy_unavailable));
|
|
}
|
|
}
|
|
|
|
|
|
public bool SupportsCaching {
|
|
get {
|
|
// Caching is supported if we have a PartialCachingControl
|
|
return (_pcc != null);
|
|
}
|
|
}
|
|
|
|
|
|
public bool Cached {
|
|
get {
|
|
CheckValidCallingContext();
|
|
|
|
return !_pcc._cachingDisabled;
|
|
}
|
|
|
|
set {
|
|
CheckValidCallingContext();
|
|
|
|
_pcc._cachingDisabled = !value;
|
|
}
|
|
}
|
|
|
|
|
|
public TimeSpan Duration {
|
|
get {
|
|
CheckValidCallingContext();
|
|
|
|
return _pcc.Duration;
|
|
}
|
|
|
|
set {
|
|
CheckValidCallingContext();
|
|
|
|
_pcc.Duration = value;
|
|
}
|
|
}
|
|
|
|
|
|
public HttpCacheVaryByParams VaryByParams {
|
|
get {
|
|
CheckValidCallingContext();
|
|
|
|
return _pcc.VaryByParams;
|
|
}
|
|
}
|
|
|
|
|
|
public string VaryByControl {
|
|
get {
|
|
CheckValidCallingContext();
|
|
|
|
return _pcc.VaryByControl;
|
|
}
|
|
|
|
set {
|
|
CheckValidCallingContext();
|
|
|
|
_pcc.VaryByControl = value;
|
|
}
|
|
}
|
|
|
|
|
|
public CacheDependency Dependency {
|
|
get {
|
|
CheckValidCallingContext();
|
|
|
|
return _pcc.Dependency;
|
|
}
|
|
|
|
set {
|
|
CheckValidCallingContext();
|
|
|
|
_pcc.Dependency = value;
|
|
}
|
|
}
|
|
|
|
|
|
public void SetVaryByCustom(string varyByCustom) {
|
|
CheckValidCallingContext();
|
|
|
|
_pcc._varyByCustom = varyByCustom;
|
|
}
|
|
|
|
|
|
public void SetSlidingExpiration(bool useSlidingExpiration) {
|
|
CheckValidCallingContext();
|
|
|
|
_pcc._useSlidingExpiration = useSlidingExpiration;
|
|
}
|
|
|
|
|
|
public void SetExpires(DateTime expirationTime) {
|
|
CheckValidCallingContext();
|
|
|
|
_pcc._utcExpirationTime = DateTimeUtil.ConvertToUniversalTime(expirationTime);
|
|
}
|
|
|
|
public String ProviderName {
|
|
get {
|
|
CheckValidCallingContext();
|
|
if (_pcc._provider == null) {
|
|
return OutputCache.ASPNET_INTERNAL_PROVIDER_NAME;
|
|
}
|
|
else {
|
|
return _pcc._provider;
|
|
}
|
|
}
|
|
set {
|
|
CheckValidCallingContext();
|
|
if (value == OutputCache.ASPNET_INTERNAL_PROVIDER_NAME) {
|
|
value = null;
|
|
}
|
|
OutputCache.ThrowIfProviderNotFound(value);
|
|
_pcc._provider = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|