From fb7c25b6626f72b583b9c912e87a8c1442b347c9 Mon Sep 17 00:00:00 2001 From: Kiran Challa Date: Wed, 4 Jan 2017 15:19:44 -0800 Subject: [PATCH] Added OriginalQueryString property to IStatusCodeReExecuteFeature interface --- .../IStatusCodeReExecuteFeature.cs | 2 ++ .../exceptions.netcore.json | 14 ++++++++++++++ .../ExceptionHandlerTest.cs | 16 +++++++++++----- 3 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 src/Microsoft.AspNetCore.Diagnostics.Abstractions/exceptions.netcore.json diff --git a/src/Microsoft.AspNetCore.Diagnostics.Abstractions/IStatusCodeReExecuteFeature.cs b/src/Microsoft.AspNetCore.Diagnostics.Abstractions/IStatusCodeReExecuteFeature.cs index 84edf178e9..31451e0bc7 100644 --- a/src/Microsoft.AspNetCore.Diagnostics.Abstractions/IStatusCodeReExecuteFeature.cs +++ b/src/Microsoft.AspNetCore.Diagnostics.Abstractions/IStatusCodeReExecuteFeature.cs @@ -8,5 +8,7 @@ namespace Microsoft.AspNetCore.Diagnostics string OriginalPathBase { get; set; } string OriginalPath { get; set; } + + string OriginalQueryString { get; set; } } } \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Diagnostics.Abstractions/exceptions.netcore.json b/src/Microsoft.AspNetCore.Diagnostics.Abstractions/exceptions.netcore.json new file mode 100644 index 0000000000..91f66e5400 --- /dev/null +++ b/src/Microsoft.AspNetCore.Diagnostics.Abstractions/exceptions.netcore.json @@ -0,0 +1,14 @@ +[ + { + "OldTypeId": "public interface Microsoft.AspNetCore.Diagnostics.IStatusCodeReExecuteFeature", + "NewTypeId": "public interface Microsoft.AspNetCore.Diagnostics.IStatusCodeReExecuteFeature", + "NewMemberId": "System.String get_OriginalQueryString()", + "Kind": "Addition" + }, + { + "OldTypeId": "public interface Microsoft.AspNetCore.Diagnostics.IStatusCodeReExecuteFeature", + "NewTypeId": "public interface Microsoft.AspNetCore.Diagnostics.IStatusCodeReExecuteFeature", + "NewMemberId": "System.Void set_OriginalQueryString(System.String value)", + "Kind": "Addition" + } +] \ No newline at end of file diff --git a/test/Microsoft.AspNetCore.Diagnostics.Tests/ExceptionHandlerTest.cs b/test/Microsoft.AspNetCore.Diagnostics.Tests/ExceptionHandlerTest.cs index bd3bad8449..87f7c87f8a 100644 --- a/test/Microsoft.AspNetCore.Diagnostics.Tests/ExceptionHandlerTest.cs +++ b/test/Microsoft.AspNetCore.Diagnostics.Tests/ExceptionHandlerTest.cs @@ -226,7 +226,7 @@ namespace Microsoft.AspNetCore.Diagnostics } [Fact] - public async Task Reexecute_RequestWithQueryString() + public async Task Reexecute_CanRetrieveInformationAboutOriginalRequest() { var expectedStatusCode = 432; var destination = "/location"; @@ -241,7 +241,7 @@ namespace Microsoft.AspNetCore.Diagnostics Assert.Equal(beforeNext, afterNext); }); - app.UseStatusCodePagesWithReExecute("/errorPage", "?id={0}"); + app.UseStatusCodePagesWithReExecute(pathFormat: "/errorPage", queryFormat: "?id={0}"); app.Map(destination, (innerAppBuilder) => { @@ -256,7 +256,13 @@ namespace Microsoft.AspNetCore.Diagnostics { innerAppBuilder.Run(async (httpContext) => { - await httpContext.Response.WriteAsync(httpContext.Request.QueryString.Value); + var statusCodeReExecuteFeature = httpContext.Features.Get(); + await httpContext.Response.WriteAsync( + httpContext.Request.QueryString.Value + + ", " + + statusCodeReExecuteFeature.OriginalPath + + ", " + + statusCodeReExecuteFeature.OriginalQueryString); }); }); @@ -269,9 +275,9 @@ namespace Microsoft.AspNetCore.Diagnostics using (var server = new TestServer(builder)) { var client = server.CreateClient(); - var response = await client.GetAsync(destination); + var response = await client.GetAsync(destination + "?name=James"); var content = await response.Content.ReadAsStringAsync(); - Assert.Equal($"?id={expectedStatusCode}", content); + Assert.Equal($"?id={expectedStatusCode}, /location, ?name=James", content); } }