@@ -16,17 +16,18 @@ namespace Microsoft.AspNet.Http.Internal
16
16
{
17
17
public class DefaultHttpContext : HttpContext , IFeatureCache
18
18
{
19
- private readonly HttpRequest _request ;
20
- private readonly HttpResponse _response ;
21
- private ConnectionInfo _connection ;
22
- private AuthenticationManager _authenticationManager ;
19
+ private readonly DefaultHttpRequest _request ;
20
+ private readonly DefaultHttpResponse _response ;
21
+
22
+ private DefaultAuthenticationManager _authenticationManager ;
23
+ private DefaultConnectionInfo _connection ;
24
+ private DefaultWebSocketManager _websockets ;
23
25
24
26
private IItemsFeature _items ;
25
27
private IServiceProvidersFeature _serviceProviders ;
26
28
private IHttpAuthenticationFeature _authentication ;
27
29
private IHttpRequestLifetimeFeature _lifetime ;
28
30
private ISessionFeature _session ;
29
- private WebSocketManager _websockets ;
30
31
31
32
private IFeatureCollection _features ;
32
33
private int _cachedFeaturesRevision = - 1 ;
@@ -49,15 +50,33 @@ void IFeatureCache.CheckFeaturesRevision()
49
50
{
50
51
if ( _cachedFeaturesRevision != _features . Revision )
51
52
{
52
- _items = null ;
53
- _serviceProviders = null ;
54
- _authentication = null ;
55
- _lifetime = null ;
56
- _session = null ;
57
- _cachedFeaturesRevision = _features . Revision ;
53
+ ResetFeatures ( ) ;
58
54
}
59
55
}
60
56
57
+ public void ReplaceFeatures ( IFeatureCollection features )
58
+ {
59
+ _features = features ;
60
+ ResetFeatures ( ) ;
61
+
62
+ _request . ReplaceFeatures ( features ) ;
63
+ _response . ReplaceFeatures ( features ) ;
64
+
65
+ _authenticationManager ? . ReplaceFeatures ( features ) ;
66
+ _connection ? . ReplaceFeatures ( features ) ;
67
+ _websockets ? . ReplaceFeatures ( features ) ;
68
+ }
69
+
70
+ private void ResetFeatures ( )
71
+ {
72
+ _items = null ;
73
+ _serviceProviders = null ;
74
+ _authentication = null ;
75
+ _lifetime = null ;
76
+ _session = null ;
77
+ _cachedFeaturesRevision = _features . Revision ;
78
+ }
79
+
61
80
IItemsFeature ItemsFeature
62
81
{
63
82
get
0 commit comments