From 67c93a9acd8d002a935875a03f1d127a5fb2a416 Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Wed, 26 Oct 2016 14:06:29 -0700 Subject: [PATCH] Removed the ? prefix from the QUERY_STRING server variable --- .../Internal/PatternSegments/QueryStringSegment.cs | 9 ++++++++- .../IISUrlRewrite/ServerVariableTests.cs | 14 +++++++++++++- .../PatternSegments/QueryStringSegmentTests.cs | 5 +---- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/PatternSegments/QueryStringSegment.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/PatternSegments/QueryStringSegment.cs index 86341bc5a8..bb1118e864 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/PatternSegments/QueryStringSegment.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/PatternSegments/QueryStringSegment.cs @@ -7,7 +7,14 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.PatternSegments { public override string Evaluate(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) { - return context.HttpContext.Request.QueryString.ToString(); + var queryString = context.HttpContext.Request.QueryString.ToString(); + + if (!string.IsNullOrEmpty(queryString)) + { + return queryString.Substring(1); + } + + return queryString; } } } diff --git a/test/Microsoft.AspNetCore.Rewrite.Tests/IISUrlRewrite/ServerVariableTests.cs b/test/Microsoft.AspNetCore.Rewrite.Tests/IISUrlRewrite/ServerVariableTests.cs index dd35c76c25..19c49d8a66 100644 --- a/test/Microsoft.AspNetCore.Rewrite.Tests/IISUrlRewrite/ServerVariableTests.cs +++ b/test/Microsoft.AspNetCore.Rewrite.Tests/IISUrlRewrite/ServerVariableTests.cs @@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite [InlineData("HTTP_USER_AGENT", "useragent")] [InlineData("HTTP_CONNECTION", "connection")] [InlineData("HTTP_URL", "/foo")] - [InlineData("QUERY_STRING", "?bar=1")] + [InlineData("QUERY_STRING", "bar=1")] [InlineData("REQUEST_FILENAME", "/foo")] public void CheckServerVariableParsingAndApplication(string variable, string expected) { @@ -61,5 +61,17 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite var match = Regex.Match("foo/bar/baz", "(.*)/(.*)/(.*)"); return new MatchResults { BackReference = match.Groups, Success = match.Success }; } + + [Fact] + private void EmptyQueryStringCheck() + { + var context = new DefaultHttpContext(); + var rewriteContext = new RewriteContext { HttpContext = context }; + var testParserContext = new ParserContext("test"); + var serverVar = ServerVariables.FindServerVariable("QUERY_STRING", testParserContext); + var lookup = serverVar.Evaluate(rewriteContext, CreateTestRuleMatch(), CreateTestCondMatch()); + + Assert.Equal(string.Empty, lookup); + } } } diff --git a/test/Microsoft.AspNetCore.Rewrite.Tests/PatternSegments/QueryStringSegmentTests.cs b/test/Microsoft.AspNetCore.Rewrite.Tests/PatternSegments/QueryStringSegmentTests.cs index a02986fc16..3e7190ef9d 100644 --- a/test/Microsoft.AspNetCore.Rewrite.Tests/PatternSegments/QueryStringSegmentTests.cs +++ b/test/Microsoft.AspNetCore.Rewrite.Tests/PatternSegments/QueryStringSegmentTests.cs @@ -12,16 +12,13 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.PatternSegments [Fact] public void QueryString_AssertSegmentIsCorrect() { - // Arrange var segement = new QueryStringSegment(); var context = new RewriteContext { HttpContext = new DefaultHttpContext() }; context.HttpContext.Request.QueryString = new QueryString("?hey=1"); - // Act var results = segement.Evaluate(context, null, null); - // Assert - Assert.Equal("?hey=1", results); + Assert.Equal("hey=1", results); } } }