3 writes to HttpContext
Microsoft.AspNetCore.OutputCaching (1)
OutputCacheMiddleware.cs (1)
94
var context = new OutputCacheContext {
HttpContext
= httpContext };
Microsoft.AspNetCore.OutputCaching.Tests (2)
TestUtils.cs (2)
234
HttpContext
= httpContext,
254
HttpContext
= httpContext,
198 references to HttpContext
Microsoft.AspNetCore.OutputCaching (35)
OutputCacheContext.cs (1)
41
/// Gets the <see cref="
HttpContext
"/>.
OutputCacheKeyProvider.cs (6)
96
var request = context.
HttpContext
.Request;
160
var requestHeaders = context.
HttpContext
.Request.Headers;
197
if (varyQueryKeys.Count == 1 && string.Equals(varyQueryKeys[0], "*", StringComparison.Ordinal) && context.
HttpContext
.Request.Query.Count > 0)
200
var queryArray = context.
HttpContext
.Request.Query.ToArray();
240
var queryKeyValues = context.
HttpContext
.Request.Query[queryKey];
286
var routeValueValue = context.
HttpContext
.Request.RouteValues[routeValueName];
OutputCacheMiddleware.cs (21)
267
await policy.ServeFromCacheAsync(context, context.
HttpContext
.RequestAborted);
286
context.
HttpContext
.Response.StatusCode = StatusCodes.Status304NotModified;
292
context.
HttpContext
.Response.Headers[key] = values;
298
var response = context.
HttpContext
.Response;
316
await context.CachedResponse.CopyToAsync(response.BodyWriter, context.
HttpContext
.RequestAborted);
320
context.
HttpContext
.Abort();
346
cacheEntry = await _outputCacheEntryDispatcher.ScheduleAsync(cacheContext.CacheKey, (Store: _store, CacheContext: cacheContext), static async (key, state) => await OutputCacheEntryFormatter.GetAsync(key, state.Store, state.CacheContext.
HttpContext
.RequestAborted));
364
if (HeaderUtilities.ContainsCacheDirective(cacheContext.
HttpContext
.Request.Headers.CacheControl, CacheControlHeaderValue.OnlyIfCachedString))
367
cacheContext.
HttpContext
.Response.StatusCode = StatusCodes.Status504GatewayTimeout;
394
var response = context.
HttpContext
.Response;
424
var contentLength = context.
HttpContext
.Response.ContentLength;
429
&& HttpMethods.IsHead(context.
HttpContext
.Request.Method)))
443
_store, _logger, context.
HttpContext
.RequestAborted);
484
if (context.
HttpContext
.Features.Get<IOutputCacheFeature>() != null)
489
context.
HttpContext
.Features.Set<IOutputCacheFeature>(new OutputCacheFeature(context));
495
context.OriginalResponseStream = context.
HttpContext
.Response.Body;
501
context.
HttpContext
.Response.Body = context.OutputCacheStream;
510
context.
HttpContext
.Response.Body = context.OriginalResponseStream;
513
RemoveOutputCacheFeature(context.
HttpContext
);
519
var ifNoneMatchHeader = context.
HttpContext
.Request.Headers.IfNoneMatch;
552
var ifModifiedSince = context.
HttpContext
.Request.Headers.IfModifiedSince;
OutputCachePolicyBuilder.cs (1)
336
if (!await r(c, c.
HttpContext
.RequestAborted))
Policies\DefaultPolicy.cs (2)
44
var response = context.
HttpContext
.Response;
67
var request = context.
HttpContext
.Request;
Policies\NamedPolicy.cs (1)
72
_options ??= context.
HttpContext
.RequestServices.GetRequiredService<IOptions<OutputCacheOptions>>();
Policies\SetCacheKeyPrefixPolicy.cs (1)
26
return _varyByAsync.Invoke(context.
HttpContext
, context.CacheVaryByRules, cancellationToken);
Policies\TypedPolicy.cs (1)
33
var options = context.
HttpContext
.RequestServices.GetRequiredService<IOptions<OutputCacheOptions>>();
Policies\VaryByValuePolicy.cs (1)
30
return _varyByAsync.Invoke(context.
HttpContext
, context.CacheVaryByRules, cancellationToken);
Microsoft.AspNetCore.OutputCaching.Tests (161)
OutputCacheAttributeTests.cs (4)
78
context.
HttpContext
.Request.Headers["HeaderA"] = "ValueA";
79
context.
HttpContext
.Request.Headers["HeaderB"] = "ValueB";
94
context.
HttpContext
.Request.QueryString = new QueryString("?QueryA=ValueA&QueryB=ValueB");
109
context.
HttpContext
.Request.RouteValues = new Routing.RouteValueDictionary()
OutputCacheKeyProviderTests.cs (50)
20
context.
HttpContext
.Request.Method = "head";
21
context.
HttpContext
.Request.Path = "/path/subpath";
22
context.
HttpContext
.Request.Scheme = "https";
23
context.
HttpContext
.Request.Host = new HostString("example.com", 80);
24
context.
HttpContext
.Request.PathBase = "/pathBase";
25
context.
HttpContext
.Request.QueryString = new QueryString("?query.Key=a&query.Value=b");
37
context.
HttpContext
.Request.Method = "head";
38
context.
HttpContext
.Request.Path = "/path/subpath";
39
context.
HttpContext
.Request.Scheme = "https";
40
context.
HttpContext
.Request.Host = new HostString("example.com", 80);
41
context.
HttpContext
.Request.PathBase = "/pathBase";
42
context.
HttpContext
.Request.QueryString = new QueryString("?query.Key=a&query.Value=b");
56
context.
HttpContext
.Request.Method = HttpMethods.Get;
57
context.
HttpContext
.Request.Path = "/Path";
70
context.
HttpContext
.Request.Method = HttpMethods.Get;
71
context.
HttpContext
.Request.Path = "/Path";
99
context.
HttpContext
.Request.RouteValues["RouteA"] = "ValueA";
100
context.
HttpContext
.Request.RouteValues["RouteB"] = "ValueB";
112
context.
HttpContext
.Request.RouteValues["RouteA"] = 123.456;
145
context.
HttpContext
.Request.Headers["HeaderA"] = "ValueA";
146
context.
HttpContext
.Request.Headers["HeaderB"] = "ValueB";
158
context.
HttpContext
.Request.Headers["HeaderA"] = "ValueA";
170
context.
HttpContext
.Request.Headers["HeaderA"] = "ValueB";
171
context.
HttpContext
.Request.Headers.Append("HeaderA", "ValueA");
183
context.
HttpContext
.Request.QueryString = new QueryString("?QueryA=ValueA&QueryB=ValueB");
196
context.
HttpContext
.Request.QueryString = new QueryString("?queryA=ValueA&queryB=ValueB");
209
context.
HttpContext
.Request.QueryString = new QueryString("?queryA=ValueA");
222
context.
HttpContext
.Request.QueryString = new QueryString("?QueryA=ValueA&QueryB=ValueB");
237
context.
HttpContext
.Request.QueryString = new QueryString("?QueryA=ValueA&QueryA=ValueB");
252
context.
HttpContext
.Request.QueryString = new QueryString("?QueryA=ValueB&QueryA=ValueA");
267
context.
HttpContext
.Request.Headers["HeaderA"] = "ValueA";
268
context.
HttpContext
.Request.Headers["HeaderB"] = "ValueB";
269
context.
HttpContext
.Request.QueryString = new QueryString("?QueryA=ValueA&QueryB=ValueB");
270
context.
HttpContext
.Request.RouteValues["RouteA"] = "ValueA";
271
context.
HttpContext
.Request.RouteValues["RouteB"] = "ValueB";
286
context.
HttpContext
.Request.Path = "/path" + KeyDelimiter;
301
context.
HttpContext
.Request.Host = new HostString("example.com" + KeyDelimiter, 80);
311
context.
HttpContext
.Request.PathBase = "/pathBase" + KeyDelimiter;
323
context.
HttpContext
.Request.Headers["HeaderA"] = "ValueA" + KeyDelimiter;
324
context.
HttpContext
.Request.Headers["HeaderB"] = "ValueB";
337
context.
HttpContext
.Request.Headers["HeaderA"] = "ValueA";
338
context.
HttpContext
.Request.Headers["HeaderB"] = "ValueB" + KeyDelimiter;
351
context.
HttpContext
.Request.QueryString = new QueryString($"?QueryA=ValueA{KeyDelimiter}&QueryB=ValueB");
364
context.
HttpContext
.Request.QueryString = new QueryString($"?QueryA{KeyDelimiter}=ValueA&QueryB=ValueB");
377
context.
HttpContext
.Request.QueryString = new QueryString($"?QueryA=ValueA&QueryB=ValueB{KeyDelimiter}");
390
context.
HttpContext
.Request.RouteValues["RouteA"] = "ValueA" + KeyDelimiter;
391
context.
HttpContext
.Request.RouteValues["RouteB"] = "ValueB";
404
context.
HttpContext
.Request.RouteValues["RouteA"] = "ValueA";
405
context.
HttpContext
.Request.RouteValues["RouteB"] = "ValueB" + KeyDelimiter;
419
context.
HttpContext
.Request.RouteValues["RouteA"] = "ValueA";
OutputCacheMiddlewareTests.cs (75)
39
context.
HttpContext
.Request.Headers.CacheControl = new CacheControlHeaderValue()
43
middleware.TryGetRequestPolicies(context.
HttpContext
, out var policies);
46
Assert.Equal(StatusCodes.Status504GatewayTimeout, context.
HttpContext
.Response.StatusCode);
59
middleware.TryGetRequestPolicies(context.
HttpContext
, out var policies);
75
middleware.TryGetRequestPolicies(context.
HttpContext
, out var policies);
103
middleware.TryGetRequestPolicies(context.
HttpContext
, out var policies);
106
context.
HttpContext
.Response.Headers["MyHeader"] = "OldValue";
119
Assert.Equal("NewValue", context.
HttpContext
.Response.Headers["MyHeader"]);
133
context.
HttpContext
.Request.Headers.IfNoneMatch = "*";
134
middleware.TryGetRequestPolicies(context.
HttpContext
, out var policies);
179
context.
HttpContext
.Request.Headers.IfModifiedSince = HeaderUtilities.FormatDate(utcNow);
217
context.
HttpContext
.Request.Headers.IfModifiedSince = HeaderUtilities.FormatDate(utcNow);
260
context.
HttpContext
.Request.Headers.IfModifiedSince = HeaderUtilities.FormatDate(utcNow);
263
context.
HttpContext
.Request.Headers.IfNoneMatch = EntityTagHeaderValue.Any.ToString();
281
context.
HttpContext
.Request.Headers.IfModifiedSince = HeaderUtilities.FormatDate(utcNow);
284
context.
HttpContext
.Request.Headers.IfNoneMatch = "\"E1\"";
297
context.
HttpContext
.Request.Headers.IfNoneMatch = "\"E1\"";
327
context.
HttpContext
.Request.Headers.IfNoneMatch = requestETag.ToString();
344
context.
HttpContext
.Request.Headers.IfNoneMatch = "\"E1\"";
359
context.
HttpContext
.Request.Headers.IfNoneMatch = new string[] { "\"E0\", \"E1\"", "\"E1\", \"E2\"" };
433
context.
HttpContext
.Response.Headers.Expires = HeaderUtilities.FormatDate(timeProvider.GetUtcNow() + TimeSpan.FromSeconds(11));
456
context.
HttpContext
.Response.Headers.CacheControl = new CacheControlHeaderValue()
461
context.
HttpContext
.Response.Headers.Expires = HeaderUtilities.FormatDate(timeProvider.GetUtcNow() + TimeSpan.FromSeconds(11));
482
context.
HttpContext
.Response.Headers.CacheControl = new CacheControlHeaderValue()
487
context.
HttpContext
.Response.Headers.Expires = HeaderUtilities.FormatDate(timeProvider.GetUtcNow() + TimeSpan.FromSeconds(11));
522
context.
HttpContext
.Response.Headers.Vary = vary;
523
context.
HttpContext
.Features.Set<IOutputCacheFeature>(new OutputCacheFeature(context));
543
Assert.True(StringValues.IsNullOrEmpty(context.
HttpContext
.Response.Headers.Date));
547
Assert.Equal(HeaderUtilities.FormatDate(utcNow), context.
HttpContext
.Response.Headers.Date);
562
context.
HttpContext
.Response.Headers.Date = HeaderUtilities.FormatDate(utcNow);
565
Assert.Equal(HeaderUtilities.FormatDate(utcNow), context.
HttpContext
.Response.Headers.Date);
569
Assert.Equal(HeaderUtilities.FormatDate(responseTime), context.
HttpContext
.Response.Headers.Date);
595
context.
HttpContext
.Response.Headers.Vary = "HeaderB, heaDera";
611
context.
HttpContext
.Response.ContentLength = 20;
613
await context.
HttpContext
.Response.WriteAsync(new string('0', 20));
639
context.
HttpContext
.Response.ContentLength = 9;
640
context.
HttpContext
.Request.Method = method;
642
await context.
HttpContext
.Response.WriteAsync(new string('0', 10));
668
context.
HttpContext
.Response.ContentLength = 10;
669
context.
HttpContext
.Request.Method = "HEAD";
674
await context.
HttpContext
.Response.WriteAsync(new string('0', 10));
700
await context.
HttpContext
.Response.WriteAsync(new string('0', 10));
724
await context.
HttpContext
.Response.WriteAsync(new string('0', 10));
745
await context.
HttpContext
.Response.WriteAsync(new string('0', 10));
769
middleware.TryGetRequestPolicies(context.
HttpContext
, out var policies);
772
await context.
HttpContext
.Response.WriteAsync(new string('0', 101));
832
context1.
HttpContext
.Request.Method = "GET";
833
context1.
HttpContext
.Request.Path = "/";
836
context2.
HttpContext
.Request.Method = "GET";
837
context2.
HttpContext
.Request.Path = "/";
839
var task1 = Task.Run(() => middleware.Invoke(context1.
HttpContext
));
844
var task2 = Task.Run(() => middleware.Invoke(context2.
HttpContext
));
883
context1.
HttpContext
.Request.Method = "GET";
884
context1.
HttpContext
.Request.Path = "/";
885
context1.
HttpContext
.Response.Body = memoryStream1;
888
context2.
HttpContext
.Request.Method = "GET";
889
context2.
HttpContext
.Request.Path = "/";
890
context2.
HttpContext
.Response.Body = memoryStream2;
892
var task1 = Task.Run(() => middleware.Invoke(context1.
HttpContext
));
898
var task2 = Task.Run(() => middleware.Invoke(context2.
HttpContext
));
947
context1.
HttpContext
.Request.Method = "GET";
948
context1.
HttpContext
.Request.Path = "/";
951
context2.
HttpContext
.Request.Method = "GET";
952
context2.
HttpContext
.Request.Path = "/";
954
var task1 = Task.Run(() => middleware.Invoke(context1.
HttpContext
));
956
var task2 = Task.Run(() => middleware.Invoke(context2.
HttpContext
));
972
context.
HttpContext
.Response.ContentLength = 5;
973
context.
HttpContext
.Request.Method = "GET";
976
await context.
HttpContext
.Response.WriteAsync("Hello");
995
context.AllowCacheLookup = !context.
HttpContext
.Request.Headers.ContainsKey("X-Refresh");
1043
requestContext.
HttpContext
.Request.Method = "GET";
1044
requestContext.
HttpContext
.Request.Path = "/";
1046
requestContext.
HttpContext
.Response.Body = responseStream;
1050
requestContext.
HttpContext
.Request.Headers.Add("X-Refresh", "randomvalue");
1053
await middleware.Invoke(requestContext.
HttpContext
);
OutputCachePolicyBuilderTests.cs (6)
107
context.
HttpContext
.Request.Headers["HeaderA"] = "ValueA";
108
context.
HttpContext
.Request.Headers["HeaderB"] = "ValueB";
124
context.
HttpContext
.Request.QueryString = new QueryString("?QueryA=ValueA&QueryB=ValueB");
140
context.
HttpContext
.Request.RouteValues = new Routing.RouteValueDictionary()
160
context.
HttpContext
.Request.RouteValues = new Routing.RouteValueDictionary()
180
context.
HttpContext
.Request.RouteValues = new Routing.RouteValueDictionary()
OutputCachePolicyProviderTests.cs (26)
49
context.
HttpContext
.Request.Method = method;
68
context.
HttpContext
.Request.Method = method;
81
context.
HttpContext
.Request.Method = HttpMethods.Get;
82
context.
HttpContext
.Request.Headers.Authorization = "Placeholder";
97
context.
HttpContext
.Request.Method = HttpMethods.Get;
98
context.
HttpContext
.Request.Headers.CacheControl = new CacheControlHeaderValue()
115
context.
HttpContext
.Request.Method = HttpMethods.Get;
116
context.
HttpContext
.Request.Headers.Pragma = "no-cache";
117
context.
HttpContext
.Request.Headers.CacheControl = "max-age=10";
145
context.
HttpContext
.Response.Headers.CacheControl = new CacheControlHeaderValue()
163
context.
HttpContext
.Response.Headers.CacheControl = new CacheControlHeaderValue()
181
context.
HttpContext
.Response.Headers.CacheControl = new CacheControlHeaderValue()
199
context.
HttpContext
.Response.Headers.SetCookie = "cookieName=cookieValue";
213
context.
HttpContext
.Response.Headers.Vary = "*";
227
context.
HttpContext
.Response.Headers.CacheControl = new CacheControlHeaderValue()
246
context.
HttpContext
.Response.StatusCode = statusCode;
322
context.
HttpContext
.Response.StatusCode = statusCode;
336
context.
HttpContext
.Response.StatusCode = StatusCodes.Status200OK;
339
context.
HttpContext
.Response.Headers.Date = HeaderUtilities.FormatDate(utcNow);
356
context.
HttpContext
.Response.StatusCode = StatusCodes.Status200OK;
357
context.
HttpContext
.Response.Headers.CacheControl = new CacheControlHeaderValue()
361
context.
HttpContext
.Response.Headers.Expires = HeaderUtilities.FormatDate(utcNow);
362
context.
HttpContext
.Response.Headers.Date = HeaderUtilities.FormatDate(utcNow);
379
context.
HttpContext
.Response.StatusCode = StatusCodes.Status200OK;
380
context.
HttpContext
.Response.Headers.CacheControl = new CacheControlHeaderValue()
385
context.
HttpContext
.Response.Headers.Date = HeaderUtilities.FormatDate(utcNow);
OutputCachingSample (2)
Startup.cs (2)
12
options.AddBasePolicy(builder => builder.With(c => c.
HttpContext
.Request.Path.StartsWithSegments("/js")).Expire(TimeSpan.FromDays(1)));
13
options.AddBasePolicy(builder => builder.With(c => c.
HttpContext
.Request.Path.StartsWithSegments("/js")).NoCache());