diff --git a/src/Microsoft.AspNet.Http/HttpContextFactory.cs b/src/Microsoft.AspNet.Http/HttpContextFactory.cs index 9c98fd1594..0f6546cd36 100644 --- a/src/Microsoft.AspNet.Http/HttpContextFactory.cs +++ b/src/Microsoft.AspNet.Http/HttpContextFactory.cs @@ -9,6 +9,10 @@ namespace Microsoft.AspNet.Http.Internal { private IHttpContextAccessor _httpContextAccessor; + public HttpContextFactory() : this(httpContextAccessor: null) + { + } + public HttpContextFactory(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; @@ -17,13 +21,19 @@ namespace Microsoft.AspNet.Http.Internal public HttpContext Create(IFeatureCollection featureCollection) { var httpContext = new DefaultHttpContext(featureCollection); - _httpContextAccessor.HttpContext = httpContext; + if (_httpContextAccessor != null) + { + _httpContextAccessor.HttpContext = httpContext; + } return httpContext; } public void Dispose(HttpContext httpContext) { - _httpContextAccessor.HttpContext = null; + if (_httpContextAccessor != null) + { + _httpContextAccessor.HttpContext = null; + } } } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Http.Tests/HttpContextFactoryTests.cs b/test/Microsoft.AspNet.Http.Tests/HttpContextFactoryTests.cs index 1fcdcab423..b0d800de38 100644 --- a/test/Microsoft.AspNet.Http.Tests/HttpContextFactoryTests.cs +++ b/test/Microsoft.AspNet.Http.Tests/HttpContextFactoryTests.cs @@ -21,5 +21,16 @@ namespace Microsoft.AspNet.Http.Internal // Assert Assert.True(ReferenceEquals(context, accessor.HttpContext)); } + + [Fact] + public void AllowsCreatingContextWithoutSettingAccessor() + { + // Arrange + var contextFactory = new HttpContextFactory(); + + // Act & Assert + var context = contextFactory.Create(new FeatureCollection()); + contextFactory.Dispose(context); + } } } \ No newline at end of file