From be5d4ec11ee1cea9f96c85d2b92d661f5601eea6 Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Fri, 22 Sep 2017 14:16:11 -0700 Subject: [PATCH] Undo a breaking change --- .../RedirectToPageResult.cs | 47 +++++++++++++++++++ .../breakingchanges.netcore.json | 5 -- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.AspNetCore.Mvc.Core/RedirectToPageResult.cs b/src/Microsoft.AspNetCore.Mvc.Core/RedirectToPageResult.cs index 38740594ec..4728a4a08c 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/RedirectToPageResult.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/RedirectToPageResult.cs @@ -3,11 +3,16 @@ using System; using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc.Core; using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.AspNetCore.Mvc.Internal; +using Microsoft.AspNetCore.Mvc.Routing; using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Net.Http.Headers; namespace Microsoft.AspNetCore.Mvc { @@ -216,5 +221,47 @@ namespace Microsoft.AspNetCore.Mvc var executor = context.HttpContext.RequestServices.GetRequiredService>(); return executor.ExecuteAsync(context, this); } + +#pragma warning disable CS0809 + [Obsolete("This implementation will be removed in a future release, use ExecuteResultAsync.")] + public override void ExecuteResult(ActionContext context) + { + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + + var services = context.HttpContext.RequestServices; + var urlHelperFactory = services.GetRequiredService(); + var logger = services.GetRequiredService>(); + + var urlHelper = UrlHelper ?? urlHelperFactory.GetUrlHelper(context); + var destinationUrl = urlHelper.Page( + PageName, + PageHandler, + RouteValues, + Protocol, + Host, + fragment: Fragment); + + if (string.IsNullOrEmpty(destinationUrl)) + { + throw new InvalidOperationException(Resources.FormatNoRoutesMatchedForPage(PageName)); + } + + logger.RedirectToPageResultExecuting(PageName); + + if (PreserveMethod) + { + context.HttpContext.Response.StatusCode = Permanent ? + StatusCodes.Status308PermanentRedirect : StatusCodes.Status307TemporaryRedirect; + context.HttpContext.Response.Headers[HeaderNames.Location] = destinationUrl; + } + else + { + context.HttpContext.Response.Redirect(destinationUrl, Permanent); + } + } +#pragma warning restore CS0809 } } diff --git a/src/Microsoft.AspNetCore.Mvc.Core/breakingchanges.netcore.json b/src/Microsoft.AspNetCore.Mvc.Core/breakingchanges.netcore.json index e0d064f41f..32960f8ced 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/breakingchanges.netcore.json +++ b/src/Microsoft.AspNetCore.Mvc.Core/breakingchanges.netcore.json @@ -1,7 +1,2 @@ [ - { - "TypeId": "public class Microsoft.AspNetCore.Mvc.RedirectToPageResult : Microsoft.AspNetCore.Mvc.ActionResult, Microsoft.AspNetCore.Mvc.ViewFeatures.IKeepTempDataResult", - "MemberId": "public override System.Void ExecuteResult(Microsoft.AspNetCore.Mvc.ActionContext context)", - "Kind": "Removal" - } ] \ No newline at end of file