| File: OutputCacheContext.cs | Web Access |
| Project: src\aspnetcore\src\Middleware\OutputCaching\src\Microsoft.AspNetCore.OutputCaching.csproj (Microsoft.AspNetCore.OutputCaching) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.Http; namespace Microsoft.AspNetCore.OutputCaching; /// <summary> /// Represent the current cache context for the request. /// </summary> public sealed class OutputCacheContext { /// <summary> /// Constructs a new instance of <see cref="OutputCacheContext"/>. /// </summary> public OutputCacheContext() { } /// <summary> /// Determines whether the output caching logic should be configured for the incoming HTTP request. /// </summary> public bool EnableOutputCaching { get; set; } /// <summary> /// Determines whether a cache lookup is allowed for the incoming HTTP request. /// </summary> public bool AllowCacheLookup { get; set; } /// <summary> /// Determines whether storage of the response is allowed for the incoming HTTP request. /// </summary> public bool AllowCacheStorage { get; set; } /// <summary> /// Determines whether the request should be locked. /// </summary> public bool AllowLocking { get; set; } /// <summary> /// Gets the <see cref="HttpContext"/>. /// </summary> public required HttpContext HttpContext { get; init; } /// <summary> /// Gets or sets the response time. /// </summary> public DateTimeOffset? ResponseTime { get; set; } /// <summary> /// Gets the <see cref="CacheVaryByRules"/> instance. /// </summary> public CacheVaryByRules CacheVaryByRules { get; } = new(); /// <summary> /// Gets the tags of the cached response. /// </summary> public HashSet<string> Tags { get; } = new(); /// <summary> /// Gets or sets the amount of time the response should be cached for. /// </summary> public TimeSpan? ResponseExpirationTimeSpan { get; set; } internal string CacheKey { get; set; } = default!; internal TimeSpan CachedResponseValidFor { get; set; } internal bool IsCacheEntryFresh { get; set; } internal TimeSpan CachedEntryAge { get; set; } internal OutputCacheEntry? CachedResponse { get; set; } internal void ReleaseCachedResponse() { var tmp = CachedResponse; CachedResponse = null; tmp?.Dispose(); } internal bool ResponseStarted { get; set; } internal Stream OriginalResponseStream { get; set; } = default!; internal OutputCacheStream OutputCacheStream { get; set; } = default!; }