diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs b/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs index 4653aca3ce..dbb5e939d5 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs @@ -347,12 +347,6 @@ namespace Microsoft.AspNetCore.Mvc [NonAction] public virtual OkObjectResult Ok(object value) { - var disposableValue = value as IDisposable; - if (disposableValue != null) - { - Response.RegisterForDispose(disposableValue); - } - return new OkObjectResult(value); } @@ -674,11 +668,6 @@ namespace Microsoft.AspNetCore.Mvc [NonAction] public virtual FileStreamResult File(Stream fileStream, string contentType, string fileDownloadName) { - if (fileStream != null) - { - Response.RegisterForDispose(fileStream); - } - return new FileStreamResult(fileStream, contentType) { FileDownloadName = fileDownloadName }; } @@ -768,12 +757,6 @@ namespace Microsoft.AspNetCore.Mvc [NonAction] public virtual NotFoundObjectResult NotFound(object value) { - var disposableValue = value as IDisposable; - if (disposableValue != null) - { - Response.RegisterForDispose(disposableValue); - } - return new NotFoundObjectResult(value); } @@ -794,12 +777,6 @@ namespace Microsoft.AspNetCore.Mvc [NonAction] public virtual BadRequestObjectResult BadRequest(object error) { - var disposableValue = error as IDisposable; - if (disposableValue != null) - { - Response.RegisterForDispose(disposableValue); - } - return new BadRequestObjectResult(error); } @@ -832,12 +809,6 @@ namespace Microsoft.AspNetCore.Mvc throw new ArgumentNullException(nameof(uri)); } - var disposableValue = value as IDisposable; - if (disposableValue != null) - { - Response.RegisterForDispose(disposableValue); - } - return new CreatedResult(uri, value); } @@ -855,12 +826,6 @@ namespace Microsoft.AspNetCore.Mvc throw new ArgumentNullException(nameof(uri)); } - var disposableValue = value as IDisposable; - if (disposableValue != null) - { - Response.RegisterForDispose(disposableValue); - } - return new CreatedResult(uri, value); } @@ -904,12 +869,6 @@ namespace Microsoft.AspNetCore.Mvc object routeValues, object value) { - var disposableValue = value as IDisposable; - if (disposableValue != null) - { - Response.RegisterForDispose(disposableValue); - } - return new CreatedAtActionResult(actionName, controllerName, routeValues, value); } @@ -947,12 +906,6 @@ namespace Microsoft.AspNetCore.Mvc [NonAction] public virtual CreatedAtRouteResult CreatedAtRoute(string routeName, object routeValues, object value) { - var disposableValue = value as IDisposable; - if (disposableValue != null) - { - Response.RegisterForDispose(disposableValue); - } - return new CreatedAtRouteResult(routeName, routeValues, value); } diff --git a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Controller.cs b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Controller.cs index 726657c8a5..e6d03bf606 100644 --- a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Controller.cs +++ b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Controller.cs @@ -293,12 +293,6 @@ namespace Microsoft.AspNetCore.Mvc [NonAction] public virtual JsonResult Json(object data) { - var disposableValue = data as IDisposable; - if (disposableValue != null) - { - Response.RegisterForDispose(disposableValue); - } - return new JsonResult(data); } @@ -321,12 +315,6 @@ namespace Microsoft.AspNetCore.Mvc throw new ArgumentNullException(nameof(serializerSettings)); } - var disposableValue = data as IDisposable; - if (disposableValue != null) - { - Response.RegisterForDispose(disposableValue); - } - return new JsonResult(data, serializerSettings); } diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs index 6c945cc37f..649dd42431 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs @@ -449,32 +449,6 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test Assert.Equal(uri.OriginalString, result.Location); } - [Fact] - public void Created_IDisposableObject_RegistersForDispose() - { - // Arrange - var mockHttpContext = new Mock(); - mockHttpContext.Setup(x => x.Response.RegisterForDispose(It.IsAny())); - var uri = new Uri("/test/url", UriKind.Relative); - - var controller = new TestableController(); - controller.ControllerContext.HttpContext = mockHttpContext.Object; - - var input = new DisposableObject(); - - // Act - var result = controller.Created(uri, input); - - // Assert - Assert.IsType(result); - Assert.Equal(StatusCodes.Status201Created, result.StatusCode); - Assert.Equal(uri.OriginalString, result.Location); - Assert.Same(input, result.Value); - mockHttpContext.Verify( - x => x.Response.RegisterForDispose(It.IsAny()), - Times.Once()); - } - [Fact] public void CreatedAtAction_WithParameterActionName_SetsResultActionName() { @@ -535,31 +509,6 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test Assert.Equal(expected, result.RouteValues); } - [Fact] - public void CreatedAtAction_IDisposableObject_RegistersForDispose() - { - // Arrange - var mockHttpContext = new Mock(); - mockHttpContext.Setup(x => x.Response.RegisterForDispose(It.IsAny())); - - var controller = new TestableController(); - controller.ControllerContext.HttpContext = mockHttpContext.Object; - - var input = new DisposableObject(); - - // Act - var result = controller.CreatedAtAction("SampleAction", input); - - // Assert - Assert.IsType(result); - Assert.Equal(StatusCodes.Status201Created, result.StatusCode); - Assert.Equal("SampleAction", result.ActionName); - Assert.Same(input, result.Value); - mockHttpContext.Verify( - x => x.Response.RegisterForDispose(It.IsAny()), - Times.Once()); - } - [Fact] public void CreatedAtRoute_WithParameterRouteName_SetsResultSameRouteName() { @@ -617,31 +566,6 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test Assert.Equal(expected, result.RouteValues); } - [Fact] - public void CreatedAtRoute_IDisposableObject_RegistersForDispose() - { - // Arrange - var mockHttpContext = new Mock(); - mockHttpContext.Setup(x => x.Response.RegisterForDispose(It.IsAny())); - - var controller = new TestableController(); - controller.ControllerContext.HttpContext = mockHttpContext.Object; - - var input = new DisposableObject(); - - // Act - var result = controller.CreatedAtRoute("SampleRoute", input); - - // Assert - Assert.IsType(result); - Assert.Equal(StatusCodes.Status201Created, result.StatusCode); - Assert.Equal("SampleRoute", result.RouteName); - Assert.Same(input, result.Value); - mockHttpContext.Verify( - x => x.Response.RegisterForDispose(It.IsAny()), - Times.Once()); - } - [Fact] public void File_WithContents() { @@ -737,7 +661,6 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test { // Arrange var mockHttpContext = new Mock(); - mockHttpContext.Setup(x => x.Response.RegisterForDispose(It.IsAny())); var controller = new TestableController(); controller.ControllerContext.HttpContext = mockHttpContext.Object; @@ -752,9 +675,6 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test Assert.Same(fileStream, result.FileStream); Assert.Equal("application/pdf", result.ContentType.ToString()); Assert.Equal("someDownloadName", result.FileDownloadName); - mockHttpContext.Verify( - x => x.Response.RegisterForDispose(It.IsAny()), - Times.Once()); } [Fact] @@ -800,30 +720,6 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test Assert.Equal("Test Content", result.Value); } - [Fact] - public void HttpNotFound_IDisposableObject_RegistersForDispose() - { - // Arrange - var mockHttpContext = new Mock(); - mockHttpContext.Setup(x => x.Response.RegisterForDispose(It.IsAny())); - - var controller = new TestableController(); - controller.ControllerContext.HttpContext = mockHttpContext.Object; - - var input = new DisposableObject(); - - // Act - var result = controller.NotFound(input); - - // Assert - Assert.IsType(result); - Assert.Equal(StatusCodes.Status404NotFound, result.StatusCode); - Assert.Same(input, result.Value); - mockHttpContext.Verify( - x => x.Response.RegisterForDispose(It.IsAny()), - Times.Once()); - } - [Fact] public void Ok_SetsStatusCode() { @@ -838,30 +734,6 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test Assert.Equal(StatusCodes.Status200OK, result.StatusCode); } - [Fact] - public void Ok_WithIDisposableObject_RegistersForDispose() - { - // Arrange - var mockHttpContext = new Mock(); - mockHttpContext.Setup(x => x.Response.RegisterForDispose(It.IsAny())); - - var controller = new TestableController(); - controller.ControllerContext.HttpContext = mockHttpContext.Object; - - var input = new DisposableObject(); - - // Act - var result = controller.Ok(input); - - // Assert - Assert.IsType(result); - Assert.Equal(StatusCodes.Status200OK, result.StatusCode); - Assert.Same(input, result.Value); - mockHttpContext.Verify( - x => x.Response.RegisterForDispose(It.IsAny()), - Times.Once()); - } - [Fact] public void BadRequest_SetsStatusCode() { @@ -892,30 +764,6 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test Assert.Equal(obj, result.Value); } - [Fact] - public void BadRequest_IDisposableObject_RegistersForDispose() - { - // Arrange - var mockHttpContext = new Mock(); - mockHttpContext.Setup(x => x.Response.RegisterForDispose(It.IsAny())); - - var controller = new TestableController(); - controller.ControllerContext.HttpContext = mockHttpContext.Object; - - var input = new DisposableObject(); - - // Act - var result = controller.BadRequest(input); - - // Assert - Assert.IsType(result); - Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode); - Assert.Same(input, result.Value); - mockHttpContext.Verify( - x => x.Response.RegisterForDispose(It.IsAny()), - Times.Once()); - } - [Fact] public void BadRequest_SetsStatusCodeAndValue_ModelState() { diff --git a/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/ControllerTest.cs b/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/ControllerTest.cs index c4fc22eccf..25430e8bee 100644 --- a/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/ControllerTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/ControllerTest.cs @@ -183,53 +183,6 @@ namespace Microsoft.AspNetCore.Mvc.Test Assert.Same(data, actualJsonResult.Value); } - [Fact] - public void Controller_Json_IDisposableObject_RegistersForDispose() - { - // Arrange - var mockHttpContext = new Mock(); - mockHttpContext.Setup(x => x.Response.RegisterForDispose(It.IsAny())); - - var controller = new TestableController(); - controller.ControllerContext.HttpContext = mockHttpContext.Object; - - var input = new DisposableObject(); - - // Act - var result = controller.Json(input); - - // Assert - Assert.IsType(result); - Assert.Same(input, result.Value); - mockHttpContext.Verify( - x => x.Response.RegisterForDispose(It.IsAny()), - Times.Once()); - } - - [Fact] - public void Controller_JsonWithParameterValueAndSerializerSettings_IDisposableObject_RegistersForDispose() - { - // Arrange - var mockHttpContext = new Mock(); - mockHttpContext.Setup(x => x.Response.RegisterForDispose(It.IsAny())); - - var controller = new TestableController(); - controller.ControllerContext.HttpContext = mockHttpContext.Object; - - var input = new DisposableObject(); - var serializerSettings = new JsonSerializerSettings(); - - // Act - var result = controller.Json(input, serializerSettings); - - // Assert - Assert.IsType(result); - Assert.Same(input, result.Value); - mockHttpContext.Verify( - x => x.Response.RegisterForDispose(It.IsAny()), - Times.Once()); - } - // These tests share code with the ActionFilterAttribute tests because the various filter // implementations need to behave the same way. [Fact]