3 writes to HttpContext
Microsoft.AspNetCore.OutputCaching (1)
OutputCacheMiddleware.cs (1)
101var context = new OutputCacheContext { HttpContext = httpContext };
Microsoft.AspNetCore.OutputCaching.Tests (2)
TestUtils.cs (2)
242HttpContext = httpContext, 264HttpContext = httpContext,
201 references to HttpContext
Microsoft.AspNetCore.OutputCaching (35)
OutputCacheContext.cs (1)
41/// Gets the <see cref="HttpContext"/>.
OutputCacheKeyProvider.cs (6)
96var request = context.HttpContext.Request; 160var requestHeaders = context.HttpContext.Request.Headers; 197if (varyQueryKeys.Count == 1 && string.Equals(varyQueryKeys[0], "*", StringComparison.Ordinal) && context.HttpContext.Request.Query.Count > 0) 200var queryArray = context.HttpContext.Request.Query.ToArray(); 240var queryKeyValues = context.HttpContext.Request.Query[queryKey]; 286var routeValueValue = context.HttpContext.Request.RouteValues[routeValueName];
OutputCacheMiddleware.cs (21)
275await policy.ServeFromCacheAsync(context, context.HttpContext.RequestAborted); 287context.HttpContext.Response.StatusCode = StatusCodes.Status304NotModified; 293context.HttpContext.Response.Headers[key] = values; 299var response = context.HttpContext.Response; 317await context.CachedResponse.CopyToAsync(response.BodyWriter, context.HttpContext.RequestAborted); 321context.HttpContext.Abort(); 347cacheEntry = await _outputCacheEntryDispatcher.ScheduleAsync(cacheContext.CacheKey, (Store: _store, CacheContext: cacheContext), static async (key, state) => await OutputCacheEntryFormatter.GetAsync(key, state.Store, state.CacheContext.HttpContext.RequestAborted)); 365if (HeaderUtilities.ContainsCacheDirective(cacheContext.HttpContext.Request.Headers.CacheControl, CacheControlHeaderValue.OnlyIfCachedString)) 368cacheContext.HttpContext.Response.StatusCode = StatusCodes.Status504GatewayTimeout; 395var response = context.HttpContext.Response; 425var contentLength = context.HttpContext.Response.ContentLength; 430&& HttpMethods.IsHead(context.HttpContext.Request.Method))) 444_store, _logger, context.HttpContext.RequestAborted); 485if (context.HttpContext.Features.Get<IOutputCacheFeature>() != null) 490context.HttpContext.Features.Set<IOutputCacheFeature>(new OutputCacheFeature(context)); 496context.OriginalResponseStream = context.HttpContext.Response.Body; 502context.HttpContext.Response.Body = context.OutputCacheStream; 511context.HttpContext.Response.Body = context.OriginalResponseStream; 514RemoveOutputCacheFeature(context.HttpContext); 520var ifNoneMatchHeader = context.HttpContext.Request.Headers.IfNoneMatch; 553var ifModifiedSince = context.HttpContext.Request.Headers.IfModifiedSince;
OutputCachePolicyBuilder.cs (1)
336if (!await r(c, c.HttpContext.RequestAborted))
Policies\DefaultPolicy.cs (2)
44var response = context.HttpContext.Response; 67var request = context.HttpContext.Request;
Policies\NamedPolicy.cs (1)
64var provider = context.HttpContext.RequestServices.GetRequiredService<IOutputCachePolicyProvider>();
Policies\SetCacheKeyPrefixPolicy.cs (1)
26return _varyByAsync.Invoke(context.HttpContext, context.CacheVaryByRules, cancellationToken);
Policies\TypedPolicy.cs (1)
33var options = context.HttpContext.RequestServices.GetRequiredService<IOptions<OutputCacheOptions>>();
Policies\VaryByValuePolicy.cs (1)
30return _varyByAsync.Invoke(context.HttpContext, context.CacheVaryByRules, cancellationToken);
Microsoft.AspNetCore.OutputCaching.Tests (164)
OutputCacheAttributeTests.cs (4)
78context.HttpContext.Request.Headers["HeaderA"] = "ValueA"; 79context.HttpContext.Request.Headers["HeaderB"] = "ValueB"; 94context.HttpContext.Request.QueryString = new QueryString("?QueryA=ValueA&QueryB=ValueB"); 109context.HttpContext.Request.RouteValues = new Routing.RouteValueDictionary()
OutputCacheKeyProviderTests.cs (50)
20context.HttpContext.Request.Method = "head"; 21context.HttpContext.Request.Path = "/path/subpath"; 22context.HttpContext.Request.Scheme = "https"; 23context.HttpContext.Request.Host = new HostString("example.com", 80); 24context.HttpContext.Request.PathBase = "/pathBase"; 25context.HttpContext.Request.QueryString = new QueryString("?query.Key=a&query.Value=b"); 37context.HttpContext.Request.Method = "head"; 38context.HttpContext.Request.Path = "/path/subpath"; 39context.HttpContext.Request.Scheme = "https"; 40context.HttpContext.Request.Host = new HostString("example.com", 80); 41context.HttpContext.Request.PathBase = "/pathBase"; 42context.HttpContext.Request.QueryString = new QueryString("?query.Key=a&query.Value=b"); 56context.HttpContext.Request.Method = HttpMethods.Get; 57context.HttpContext.Request.Path = "/Path"; 70context.HttpContext.Request.Method = HttpMethods.Get; 71context.HttpContext.Request.Path = "/Path"; 99context.HttpContext.Request.RouteValues["RouteA"] = "ValueA"; 100context.HttpContext.Request.RouteValues["RouteB"] = "ValueB"; 112context.HttpContext.Request.RouteValues["RouteA"] = 123.456; 145context.HttpContext.Request.Headers["HeaderA"] = "ValueA"; 146context.HttpContext.Request.Headers["HeaderB"] = "ValueB"; 158context.HttpContext.Request.Headers["HeaderA"] = "ValueA"; 170context.HttpContext.Request.Headers["HeaderA"] = "ValueB"; 171context.HttpContext.Request.Headers.Append("HeaderA", "ValueA"); 183context.HttpContext.Request.QueryString = new QueryString("?QueryA=ValueA&QueryB=ValueB"); 196context.HttpContext.Request.QueryString = new QueryString("?queryA=ValueA&queryB=ValueB"); 209context.HttpContext.Request.QueryString = new QueryString("?queryA=ValueA"); 222context.HttpContext.Request.QueryString = new QueryString("?QueryA=ValueA&QueryB=ValueB"); 237context.HttpContext.Request.QueryString = new QueryString("?QueryA=ValueA&QueryA=ValueB"); 252context.HttpContext.Request.QueryString = new QueryString("?QueryA=ValueB&QueryA=ValueA"); 267context.HttpContext.Request.Headers["HeaderA"] = "ValueA"; 268context.HttpContext.Request.Headers["HeaderB"] = "ValueB"; 269context.HttpContext.Request.QueryString = new QueryString("?QueryA=ValueA&QueryB=ValueB"); 270context.HttpContext.Request.RouteValues["RouteA"] = "ValueA"; 271context.HttpContext.Request.RouteValues["RouteB"] = "ValueB"; 286context.HttpContext.Request.Path = "/path" + KeyDelimiter; 301context.HttpContext.Request.Host = new HostString("example.com" + KeyDelimiter, 80); 311context.HttpContext.Request.PathBase = "/pathBase" + KeyDelimiter; 323context.HttpContext.Request.Headers["HeaderA"] = "ValueA" + KeyDelimiter; 324context.HttpContext.Request.Headers["HeaderB"] = "ValueB"; 337context.HttpContext.Request.Headers["HeaderA"] = "ValueA"; 338context.HttpContext.Request.Headers["HeaderB"] = "ValueB" + KeyDelimiter; 351context.HttpContext.Request.QueryString = new QueryString($"?QueryA=ValueA{KeyDelimiter}&QueryB=ValueB"); 364context.HttpContext.Request.QueryString = new QueryString($"?QueryA{KeyDelimiter}=ValueA&QueryB=ValueB"); 377context.HttpContext.Request.QueryString = new QueryString($"?QueryA=ValueA&QueryB=ValueB{KeyDelimiter}"); 390context.HttpContext.Request.RouteValues["RouteA"] = "ValueA" + KeyDelimiter; 391context.HttpContext.Request.RouteValues["RouteB"] = "ValueB"; 404context.HttpContext.Request.RouteValues["RouteA"] = "ValueA"; 405context.HttpContext.Request.RouteValues["RouteB"] = "ValueB" + KeyDelimiter; 419context.HttpContext.Request.RouteValues["RouteA"] = "ValueA";
OutputCacheMiddlewareTests.cs (78)
39context.HttpContext.Request.Headers.CacheControl = new CacheControlHeaderValue() 43middleware.TryGetRequestPolicies(context.HttpContext, out var policies); 46Assert.Equal(StatusCodes.Status504GatewayTimeout, context.HttpContext.Response.StatusCode); 59middleware.TryGetRequestPolicies(context.HttpContext, out var policies); 75middleware.TryGetRequestPolicies(context.HttpContext, out var policies); 103middleware.TryGetRequestPolicies(context.HttpContext, out var policies); 106context.HttpContext.Response.Headers["MyHeader"] = "OldValue"; 119Assert.Equal("NewValue", context.HttpContext.Response.Headers["MyHeader"]); 133context.HttpContext.Request.Headers.IfNoneMatch = "*"; 134middleware.TryGetRequestPolicies(context.HttpContext, out var policies); 179context.HttpContext.Request.Headers.IfModifiedSince = HeaderUtilities.FormatDate(utcNow); 217context.HttpContext.Request.Headers.IfModifiedSince = HeaderUtilities.FormatDate(utcNow); 260context.HttpContext.Request.Headers.IfModifiedSince = HeaderUtilities.FormatDate(utcNow); 263context.HttpContext.Request.Headers.IfNoneMatch = EntityTagHeaderValue.Any.ToString(); 281context.HttpContext.Request.Headers.IfModifiedSince = HeaderUtilities.FormatDate(utcNow); 284context.HttpContext.Request.Headers.IfNoneMatch = "\"E1\""; 297context.HttpContext.Request.Headers.IfNoneMatch = "\"E1\""; 327context.HttpContext.Request.Headers.IfNoneMatch = requestETag.ToString(); 344context.HttpContext.Request.Headers.IfNoneMatch = "\"E1\""; 359context.HttpContext.Request.Headers.IfNoneMatch = new string[] { "\"E0\", \"E1\"", "\"E1\", \"E2\"" }; 433context.HttpContext.Response.Headers.Expires = HeaderUtilities.FormatDate(timeProvider.GetUtcNow() + TimeSpan.FromSeconds(11)); 456context.HttpContext.Response.Headers.CacheControl = new CacheControlHeaderValue() 461context.HttpContext.Response.Headers.Expires = HeaderUtilities.FormatDate(timeProvider.GetUtcNow() + TimeSpan.FromSeconds(11)); 482context.HttpContext.Response.Headers.CacheControl = new CacheControlHeaderValue() 487context.HttpContext.Response.Headers.Expires = HeaderUtilities.FormatDate(timeProvider.GetUtcNow() + TimeSpan.FromSeconds(11)); 504middleware.TryGetRequestPolicies(context.HttpContext, out var policies); 534middleware.TryGetRequestPolicies(context.HttpContext, out var policies); 568middleware.TryGetRequestPolicies(context.HttpContext, out var policies); 618context.HttpContext.Response.Headers.Vary = vary; 619context.HttpContext.Features.Set<IOutputCacheFeature>(new OutputCacheFeature(context)); 639Assert.True(StringValues.IsNullOrEmpty(context.HttpContext.Response.Headers.Date)); 643Assert.Equal(HeaderUtilities.FormatDate(utcNow), context.HttpContext.Response.Headers.Date); 658context.HttpContext.Response.Headers.Date = HeaderUtilities.FormatDate(utcNow); 661Assert.Equal(HeaderUtilities.FormatDate(utcNow), context.HttpContext.Response.Headers.Date); 665Assert.Equal(HeaderUtilities.FormatDate(responseTime), context.HttpContext.Response.Headers.Date); 691context.HttpContext.Response.Headers.Vary = "HeaderB, heaDera"; 707context.HttpContext.Response.ContentLength = 20; 709await context.HttpContext.Response.WriteAsync(new string('0', 20)); 735context.HttpContext.Response.ContentLength = 9; 736context.HttpContext.Request.Method = method; 738await context.HttpContext.Response.WriteAsync(new string('0', 10)); 764context.HttpContext.Response.ContentLength = 10; 765context.HttpContext.Request.Method = "HEAD"; 770await context.HttpContext.Response.WriteAsync(new string('0', 10)); 796await context.HttpContext.Response.WriteAsync(new string('0', 10)); 820await context.HttpContext.Response.WriteAsync(new string('0', 10)); 841await context.HttpContext.Response.WriteAsync(new string('0', 10)); 865middleware.TryGetRequestPolicies(context.HttpContext, out var policies); 868await context.HttpContext.Response.WriteAsync(new string('0', 101)); 928context1.HttpContext.Request.Method = "GET"; 929context1.HttpContext.Request.Path = "/"; 932context2.HttpContext.Request.Method = "GET"; 933context2.HttpContext.Request.Path = "/"; 935var task1 = Task.Run(() => middleware.Invoke(context1.HttpContext)); 940var task2 = Task.Run(() => middleware.Invoke(context2.HttpContext)); 979context1.HttpContext.Request.Method = "GET"; 980context1.HttpContext.Request.Path = "/"; 981context1.HttpContext.Response.Body = memoryStream1; 984context2.HttpContext.Request.Method = "GET"; 985context2.HttpContext.Request.Path = "/"; 986context2.HttpContext.Response.Body = memoryStream2; 988var task1 = Task.Run(() => middleware.Invoke(context1.HttpContext)); 994var task2 = Task.Run(() => middleware.Invoke(context2.HttpContext)); 1042context1.HttpContext.Request.Method = "GET"; 1043context1.HttpContext.Request.Path = "/"; 1046context2.HttpContext.Request.Method = "GET"; 1047context2.HttpContext.Request.Path = "/"; 1049var task1 = Task.Run(() => middleware.Invoke(context1.HttpContext)); 1051var task2 = Task.Run(() => middleware.Invoke(context2.HttpContext)); 1067context.HttpContext.Response.ContentLength = 5; 1068context.HttpContext.Request.Method = "GET"; 1071await context.HttpContext.Response.WriteAsync("Hello"); 1090context.AllowCacheLookup = !context.HttpContext.Request.Headers.ContainsKey("X-Refresh"); 1138requestContext.HttpContext.Request.Method = "GET"; 1139requestContext.HttpContext.Request.Path = "/"; 1141requestContext.HttpContext.Response.Body = responseStream; 1145requestContext.HttpContext.Request.Headers.Add("X-Refresh", "randomvalue"); 1148await middleware.Invoke(requestContext.HttpContext);
OutputCachePolicyBuilderTests.cs (6)
107context.HttpContext.Request.Headers["HeaderA"] = "ValueA"; 108context.HttpContext.Request.Headers["HeaderB"] = "ValueB"; 124context.HttpContext.Request.QueryString = new QueryString("?QueryA=ValueA&QueryB=ValueB"); 140context.HttpContext.Request.RouteValues = new Routing.RouteValueDictionary() 160context.HttpContext.Request.RouteValues = new Routing.RouteValueDictionary() 180context.HttpContext.Request.RouteValues = new Routing.RouteValueDictionary()
OutputCachePolicyProviderTests.cs (26)
49context.HttpContext.Request.Method = method; 68context.HttpContext.Request.Method = method; 81context.HttpContext.Request.Method = HttpMethods.Get; 82context.HttpContext.Request.Headers.Authorization = "Placeholder"; 97context.HttpContext.Request.Method = HttpMethods.Get; 98context.HttpContext.Request.Headers.CacheControl = new CacheControlHeaderValue() 115context.HttpContext.Request.Method = HttpMethods.Get; 116context.HttpContext.Request.Headers.Pragma = "no-cache"; 117context.HttpContext.Request.Headers.CacheControl = "max-age=10"; 145context.HttpContext.Response.Headers.CacheControl = new CacheControlHeaderValue() 163context.HttpContext.Response.Headers.CacheControl = new CacheControlHeaderValue() 181context.HttpContext.Response.Headers.CacheControl = new CacheControlHeaderValue() 199context.HttpContext.Response.Headers.SetCookie = "cookieName=cookieValue"; 213context.HttpContext.Response.Headers.Vary = "*"; 227context.HttpContext.Response.Headers.CacheControl = new CacheControlHeaderValue() 246context.HttpContext.Response.StatusCode = statusCode; 322context.HttpContext.Response.StatusCode = statusCode; 336context.HttpContext.Response.StatusCode = StatusCodes.Status200OK; 339context.HttpContext.Response.Headers.Date = HeaderUtilities.FormatDate(utcNow); 356context.HttpContext.Response.StatusCode = StatusCodes.Status200OK; 357context.HttpContext.Response.Headers.CacheControl = new CacheControlHeaderValue() 361context.HttpContext.Response.Headers.Expires = HeaderUtilities.FormatDate(utcNow); 362context.HttpContext.Response.Headers.Date = HeaderUtilities.FormatDate(utcNow); 379context.HttpContext.Response.StatusCode = StatusCodes.Status200OK; 380context.HttpContext.Response.Headers.CacheControl = new CacheControlHeaderValue() 385context.HttpContext.Response.Headers.Date = HeaderUtilities.FormatDate(utcNow);
OutputCachingSample (2)
Startup.cs (2)
12options.AddBasePolicy(builder => builder.With(c => c.HttpContext.Request.Path.StartsWithSegments("/js")).Expire(TimeSpan.FromDays(1))); 13options.AddBasePolicy(builder => builder.With(c => c.HttpContext.Request.Path.StartsWithSegments("/js")).NoCache());