3 writes to HttpContext
Microsoft.AspNetCore.OutputCaching (1)
OutputCacheMiddleware.cs (1)
94var context = new OutputCacheContext { HttpContext = httpContext };
Microsoft.AspNetCore.OutputCaching.Tests (2)
TestUtils.cs (2)
234HttpContext = httpContext, 254HttpContext = httpContext,
198 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)
267await policy.ServeFromCacheAsync(context, context.HttpContext.RequestAborted); 286context.HttpContext.Response.StatusCode = StatusCodes.Status304NotModified; 292context.HttpContext.Response.Headers[key] = values; 298var response = context.HttpContext.Response; 316await context.CachedResponse.CopyToAsync(response.BodyWriter, context.HttpContext.RequestAborted); 320context.HttpContext.Abort(); 346cacheEntry = await _outputCacheEntryDispatcher.ScheduleAsync(cacheContext.CacheKey, (Store: _store, CacheContext: cacheContext), static async (key, state) => await OutputCacheEntryFormatter.GetAsync(key, state.Store, state.CacheContext.HttpContext.RequestAborted)); 364if (HeaderUtilities.ContainsCacheDirective(cacheContext.HttpContext.Request.Headers.CacheControl, CacheControlHeaderValue.OnlyIfCachedString)) 367cacheContext.HttpContext.Response.StatusCode = StatusCodes.Status504GatewayTimeout; 394var response = context.HttpContext.Response; 424var contentLength = context.HttpContext.Response.ContentLength; 429&& HttpMethods.IsHead(context.HttpContext.Request.Method))) 443_store, _logger, context.HttpContext.RequestAborted); 484if (context.HttpContext.Features.Get<IOutputCacheFeature>() != null) 489context.HttpContext.Features.Set<IOutputCacheFeature>(new OutputCacheFeature(context)); 495context.OriginalResponseStream = context.HttpContext.Response.Body; 501context.HttpContext.Response.Body = context.OutputCacheStream; 510context.HttpContext.Response.Body = context.OriginalResponseStream; 513RemoveOutputCacheFeature(context.HttpContext); 519var ifNoneMatchHeader = context.HttpContext.Request.Headers.IfNoneMatch; 552var 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)
72_options ??= context.HttpContext.RequestServices.GetRequiredService<IOptions<OutputCacheOptions>>();
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 (161)
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 (75)
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)); 522context.HttpContext.Response.Headers.Vary = vary; 523context.HttpContext.Features.Set<IOutputCacheFeature>(new OutputCacheFeature(context)); 543Assert.True(StringValues.IsNullOrEmpty(context.HttpContext.Response.Headers.Date)); 547Assert.Equal(HeaderUtilities.FormatDate(utcNow), context.HttpContext.Response.Headers.Date); 562context.HttpContext.Response.Headers.Date = HeaderUtilities.FormatDate(utcNow); 565Assert.Equal(HeaderUtilities.FormatDate(utcNow), context.HttpContext.Response.Headers.Date); 569Assert.Equal(HeaderUtilities.FormatDate(responseTime), context.HttpContext.Response.Headers.Date); 595context.HttpContext.Response.Headers.Vary = "HeaderB, heaDera"; 611context.HttpContext.Response.ContentLength = 20; 613await context.HttpContext.Response.WriteAsync(new string('0', 20)); 639context.HttpContext.Response.ContentLength = 9; 640context.HttpContext.Request.Method = method; 642await context.HttpContext.Response.WriteAsync(new string('0', 10)); 668context.HttpContext.Response.ContentLength = 10; 669context.HttpContext.Request.Method = "HEAD"; 674await context.HttpContext.Response.WriteAsync(new string('0', 10)); 700await context.HttpContext.Response.WriteAsync(new string('0', 10)); 724await context.HttpContext.Response.WriteAsync(new string('0', 10)); 745await context.HttpContext.Response.WriteAsync(new string('0', 10)); 769middleware.TryGetRequestPolicies(context.HttpContext, out var policies); 772await context.HttpContext.Response.WriteAsync(new string('0', 101)); 832context1.HttpContext.Request.Method = "GET"; 833context1.HttpContext.Request.Path = "/"; 836context2.HttpContext.Request.Method = "GET"; 837context2.HttpContext.Request.Path = "/"; 839var task1 = Task.Run(() => middleware.Invoke(context1.HttpContext)); 844var task2 = Task.Run(() => middleware.Invoke(context2.HttpContext)); 883context1.HttpContext.Request.Method = "GET"; 884context1.HttpContext.Request.Path = "/"; 885context1.HttpContext.Response.Body = memoryStream1; 888context2.HttpContext.Request.Method = "GET"; 889context2.HttpContext.Request.Path = "/"; 890context2.HttpContext.Response.Body = memoryStream2; 892var task1 = Task.Run(() => middleware.Invoke(context1.HttpContext)); 898var task2 = Task.Run(() => middleware.Invoke(context2.HttpContext)); 947context1.HttpContext.Request.Method = "GET"; 948context1.HttpContext.Request.Path = "/"; 951context2.HttpContext.Request.Method = "GET"; 952context2.HttpContext.Request.Path = "/"; 954var task1 = Task.Run(() => middleware.Invoke(context1.HttpContext)); 956var task2 = Task.Run(() => middleware.Invoke(context2.HttpContext)); 972context.HttpContext.Response.ContentLength = 5; 973context.HttpContext.Request.Method = "GET"; 976await context.HttpContext.Response.WriteAsync("Hello"); 995context.AllowCacheLookup = !context.HttpContext.Request.Headers.ContainsKey("X-Refresh"); 1043requestContext.HttpContext.Request.Method = "GET"; 1044requestContext.HttpContext.Request.Path = "/"; 1046requestContext.HttpContext.Response.Body = responseStream; 1050requestContext.HttpContext.Request.Headers.Add("X-Refresh", "randomvalue"); 1053await 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());