diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/CodeRules/DelegateRule.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/CodeRules/DelegateRule.cs index 72216f0abc..869e773c37 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/CodeRules/DelegateRule.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/CodeRules/DelegateRule.cs @@ -7,12 +7,12 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.CodeRules { public class DelegateRule : Rule { - private readonly Func _onApplyRule; + private readonly Action _onApplyRule; - public DelegateRule(Func onApplyRule) + public DelegateRule(Action onApplyRule) { _onApplyRule = onApplyRule; } - public override RuleResult ApplyRule(RewriteContext context) => _onApplyRule(context); + public override void ApplyRule(RewriteContext context) => _onApplyRule(context); } } \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/CodeRules/RedirectToHttpsRule.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/CodeRules/RedirectToHttpsRule.cs index 558810b50a..a4b99de157 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/CodeRules/RedirectToHttpsRule.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/CodeRules/RedirectToHttpsRule.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.CodeRules public int? SSLPort { get; set; } public int StatusCode { get; set; } - public override RuleResult ApplyRule(RewriteContext context) + public override void ApplyRule(RewriteContext context) { if (!context.HttpContext.Request.IsHttps) { @@ -31,9 +31,8 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.CodeRules var newUrl = new StringBuilder().Append("https://").Append(host).Append(req.PathBase).Append(req.Path).Append(req.QueryString); context.HttpContext.Response.Redirect(newUrl.ToString()); - return RuleResult.ResponseComplete; + context.Result = RuleTermination.ResponseComplete; } - return RuleResult.Continue; } } } \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewrite/ModRewriteRedirectAction.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewrite/ModRewriteRedirectAction.cs index 75bc8aa0cc..6198b1a35e 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewrite/ModRewriteRedirectAction.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewrite/ModRewriteRedirectAction.cs @@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.ModRewrite EscapeBackReferences = escapeBackReferences; } - public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) + public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) { var pattern = Url.Evaluate(context, ruleMatch, condMatch); if (EscapeBackReferences) @@ -64,7 +64,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.ModRewrite context.HttpContext.Response.Headers[HeaderNames.Location] = pattern + context.HttpContext.Request.QueryString; } } - return RuleResult.ResponseComplete; + context.Result = RuleTermination.ResponseComplete; } } } diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewrite/ModRewriteRewriteAction.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewrite/ModRewriteRewriteAction.cs index 01cb99dd24..1186f3f8f9 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewrite/ModRewriteRewriteAction.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewrite/ModRewriteRewriteAction.cs @@ -10,13 +10,13 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.ModRewrite public class ModRewriteRewriteAction : UrlAction { private readonly string ForwardSlash = "/"; - public RuleResult Result { get; } + public RuleTermination Result { get; } public bool QueryStringAppend { get; } public bool QueryStringDelete { get; } public bool EscapeBackReferences { get; } public ModRewriteRewriteAction( - RuleResult result, + RuleTermination result, Pattern pattern, bool queryStringAppend, bool queryStringDelete, @@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.ModRewrite EscapeBackReferences = escapeBackReferences; } - public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) + public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) { var pattern = Url.Evaluate(context, ruleMatch, condMatch); @@ -107,7 +107,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.ModRewrite } } } - return Result; + context.Result = Result; } } } diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewrite/RuleBuilder.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewrite/RuleBuilder.cs index 8190431803..be83b1f76e 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewrite/RuleBuilder.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewrite/RuleBuilder.cs @@ -215,8 +215,8 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.ModRewrite else { var last = flags.HasFlag(FlagType.End) || flags.HasFlag(FlagType.Last); - var redirect = last ? RuleResult.StopRules : RuleResult.Continue; - _action = new ModRewriteRewriteAction(redirect, pattern, queryStringAppend, queryStringDelete, escapeBackReference); + var termination = last ? RuleTermination.StopRules : RuleTermination.Continue; + _action = new ModRewriteRewriteAction(termination, pattern, queryStringAppend, queryStringDelete, escapeBackReference); } } } diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewriteRule.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewriteRule.cs index eb54eed72a..3a2bcb21dd 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewriteRule.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/ModRewriteRule.cs @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal PreActions = preActions; } - public override RuleResult ApplyRule(RewriteContext context) + public override void ApplyRule(RewriteContext context) { // 1. Figure out which section of the string to match for the initial rule. var initMatchRes = InitialMatch.Evaluate(context.HttpContext.Request.Path, context); @@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal if (!initMatchRes.Success) { context.Logger?.ModRewriteDidNotMatchRule(); - return RuleResult.Continue; + return; } MatchResults condMatchRes = null; @@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal if (!condMatchRes.Success) { context.Logger?.ModRewriteDidNotMatchRule(); - return RuleResult.Continue; + return; } } @@ -51,7 +51,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal preAction.ApplyAction(context.HttpContext, initMatchRes, condMatchRes); } - return Action.ApplyAction(context, initMatchRes, condMatchRes); + Action.ApplyAction(context, initMatchRes, condMatchRes); } } } diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlAction.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlAction.cs index 326d22b377..a833ee9b17 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlAction.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlAction.cs @@ -6,6 +6,6 @@ namespace Microsoft.AspNetCore.Rewrite.Internal public abstract class UrlAction { protected Pattern Url { get; set; } - public abstract RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch); + public abstract void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch); } } diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/ForbiddenAction.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/ForbiddenAction.cs index 43589509f3..08ad531d08 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/ForbiddenAction.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/ForbiddenAction.cs @@ -7,10 +7,10 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions { public class ForbiddenAction : UrlAction { - public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) + public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) { context.HttpContext.Response.StatusCode = StatusCodes.Status403Forbidden; - return RuleResult.ResponseComplete; + context.Result = RuleTermination.ResponseComplete; } } } diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/GoneAction.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/GoneAction.cs index d56eb09744..4a753c61da 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/GoneAction.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/GoneAction.cs @@ -7,10 +7,10 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions { public class GoneAction : UrlAction { - public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) + public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) { context.HttpContext.Response.StatusCode = StatusCodes.Status410Gone; - return RuleResult.ResponseComplete; + context.Result = RuleTermination.ResponseComplete; } } } diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/RedirectAction.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/RedirectAction.cs index f0cac6afb7..f73baad942 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/RedirectAction.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/RedirectAction.cs @@ -19,7 +19,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions AppendQueryString = appendQueryString; } - public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) + public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) { var pattern = Url.Evaluate(context, ruleMatch, condMatch); context.HttpContext.Response.StatusCode = StatusCode; @@ -46,7 +46,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions { context.HttpContext.Response.Headers[HeaderNames.Location] = pattern; } - return RuleResult.ResponseComplete; + context.Result = RuleTermination.ResponseComplete; } } } diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/RewriteAction.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/RewriteAction.cs index 7c9cd06103..13683a875f 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/RewriteAction.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/RewriteAction.cs @@ -20,7 +20,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions ClearQuery = clearQuery; } - public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) + public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) { var pattern = Url.Evaluate(context, ruleMatch, condMatch); @@ -73,7 +73,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions } } } - return new RuleResult { Result = Result }; + context.Result = Result; } } } diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/VoidAction.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/VoidAction.cs index c58c6e94cd..4ac2a08144 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/VoidAction.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlActions/VoidAction.cs @@ -5,16 +5,16 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions { public class VoidAction : UrlAction { - private readonly RuleResult _results; + public RuleTermination Result { get; } - public VoidAction(RuleResult results) + public VoidAction(RuleTermination result) { - _results = results; + Result = result; } // Explicitly say that nothing happens - public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) + public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch) { - return _results; + context.Result = Result; } } } diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlRewrite/UrlRewriteRuleBuilder.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlRewrite/UrlRewriteRuleBuilder.cs index 90da1e57d9..bb8f2e8e7c 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlRewrite/UrlRewriteRuleBuilder.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlRewrite/UrlRewriteRuleBuilder.cs @@ -42,7 +42,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlRewrite switch (actionType) { case ActionType.None: - _action = new VoidAction(stopProcessing ? RuleResult.StopRules : RuleResult.Continue); + _action = new VoidAction(stopProcessing ? RuleTermination.StopRules : RuleTermination.Continue); break; case ActionType.Rewrite: _action = new RewriteAction(stopProcessing ? RuleTermination.StopRules : RuleTermination.Continue, diff --git a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlRewriteRule.cs b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlRewriteRule.cs index 94a88763ff..6923445187 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Internal/UrlRewriteRule.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Internal/UrlRewriteRule.cs @@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal Action = action; } - public override RuleResult ApplyRule(RewriteContext context) + public override void ApplyRule(RewriteContext context) { // Due to the path string always having a leading slash, // remove it from the path before regex comparison @@ -43,7 +43,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal if (!initMatchResults.Success) { context.Logger?.UrlRewriteDidNotMatchRule(Name); - return RuleResult.Continue; + return; } MatchResults condMatchRes = null; @@ -53,13 +53,13 @@ namespace Microsoft.AspNetCore.Rewrite.Internal if (!condMatchRes.Success) { context.Logger?.UrlRewriteDidNotMatchRule(Name); - return RuleResult.Continue; + return; } } context.Logger?.UrlRewriteMatchedRule(Name); // at this point we know the rule passed, evaluate the replacement. - return Action.ApplyAction(context, initMatchResults, condMatchRes); + Action.ApplyAction(context, initMatchResults, condMatchRes); } } } \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Rewrite/RewriteContext.cs b/src/Microsoft.AspNetCore.Rewrite/RewriteContext.cs index 4b4fb8e8db..76dd9c6989 100644 --- a/src/Microsoft.AspNetCore.Rewrite/RewriteContext.cs +++ b/src/Microsoft.AspNetCore.Rewrite/RewriteContext.cs @@ -17,6 +17,7 @@ namespace Microsoft.AspNetCore.Rewrite public HttpContext HttpContext { get; set; } public IFileProvider StaticFileProvider { get; set; } public ILogger Logger { get; set; } + public RuleTermination Result { get; set; } // PERF: share the same string builder per request internal StringBuilder Builder { get; set; } = new StringBuilder(64); } diff --git a/src/Microsoft.AspNetCore.Rewrite/RewriteMiddleware.cs b/src/Microsoft.AspNetCore.Rewrite/RewriteMiddleware.cs index afcbcb576f..10e1a0a1a1 100644 --- a/src/Microsoft.AspNetCore.Rewrite/RewriteMiddleware.cs +++ b/src/Microsoft.AspNetCore.Rewrite/RewriteMiddleware.cs @@ -65,30 +65,31 @@ namespace Microsoft.AspNetCore.Rewrite { throw new ArgumentNullException(nameof(context)); } - var urlContext = new RewriteContext { + var rewriteContext = new RewriteContext { HttpContext = context, StaticFileProvider = _fileProvider, - Logger = _logger + Logger = _logger, + Result = RuleTermination.Continue }; foreach (var rule in _options.Rules) { - var result = rule.ApplyRule(urlContext); - switch (result.Result) + rule.ApplyRule(rewriteContext); + switch (rewriteContext.Result) { case RuleTermination.Continue: _logger.RewriteMiddlewareRequestContinueResults(); break; case RuleTermination.ResponseComplete: _logger.RewriteMiddlewareRequestResponseComplete( - urlContext.HttpContext.Response.Headers[HeaderNames.Location], - urlContext.HttpContext.Response.StatusCode); + context.Response.Headers[HeaderNames.Location], + context.Response.StatusCode); return CompletedTask; case RuleTermination.StopRules: _logger.RewriteMiddlewareRequestStopRules(); return _next(context); default: - throw new ArgumentOutOfRangeException($"Invalid rule termination {result}"); + throw new ArgumentOutOfRangeException($"Invalid rule termination {rewriteContext.Result}"); } } return _next(context); diff --git a/src/Microsoft.AspNetCore.Rewrite/RewriteOptionsExtensions.cs b/src/Microsoft.AspNetCore.Rewrite/RewriteOptionsExtensions.cs index 0861fa50f1..e0cf65479f 100644 --- a/src/Microsoft.AspNetCore.Rewrite/RewriteOptionsExtensions.cs +++ b/src/Microsoft.AspNetCore.Rewrite/RewriteOptionsExtensions.cs @@ -31,7 +31,7 @@ namespace Microsoft.AspNetCore.Rewrite /// The Rewrite options. /// A Func that checks and applies the rule. /// - public static RewriteOptions Add(this RewriteOptions options, Func applyRule) + public static RewriteOptions Add(this RewriteOptions options, Action applyRule) { options.Rules.Add(new DelegateRule(applyRule)); return options; diff --git a/src/Microsoft.AspNetCore.Rewrite/Rule.cs b/src/Microsoft.AspNetCore.Rewrite/Rule.cs index 82a70dabc5..90eef4b050 100644 --- a/src/Microsoft.AspNetCore.Rewrite/Rule.cs +++ b/src/Microsoft.AspNetCore.Rewrite/Rule.cs @@ -4,9 +4,10 @@ namespace Microsoft.AspNetCore.Rewrite { // make this public and doc comements + // caller must set the context.Results field appropriately in rule. public abstract class Rule { - public abstract RuleResult ApplyRule(RewriteContext context); + public abstract void ApplyRule(RewriteContext context); } } diff --git a/src/Microsoft.AspNetCore.Rewrite/RuleResult.cs b/src/Microsoft.AspNetCore.Rewrite/RuleResult.cs deleted file mode 100644 index 2b2bb4abf3..0000000000 --- a/src/Microsoft.AspNetCore.Rewrite/RuleResult.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -namespace Microsoft.AspNetCore.Rewrite -{ - public class RuleResult - { - public static RuleResult Continue = new RuleResult { Result = RuleTermination.Continue }; - public static RuleResult ResponseComplete = new RuleResult { Result = RuleTermination.ResponseComplete }; - public static RuleResult StopRules = new RuleResult { Result = RuleTermination.StopRules }; - - public RuleTermination Result { get; set; } - } -} diff --git a/test/Microsoft.AspNetCore.Rewrite.Tests/UrlActions/ForbiddenActionTests.cs b/test/Microsoft.AspNetCore.Rewrite.Tests/UrlActions/ForbiddenActionTests.cs index 27e2bcca40..fa668e29d6 100644 --- a/test/Microsoft.AspNetCore.Rewrite.Tests/UrlActions/ForbiddenActionTests.cs +++ b/test/Microsoft.AspNetCore.Rewrite.Tests/UrlActions/ForbiddenActionTests.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Rewrite.Internal; using Microsoft.AspNetCore.Rewrite.Internal.UrlActions; using Xunit; @@ -18,10 +17,10 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlActions var action = new ForbiddenAction(); // Act - var results = action.ApplyAction(context, null, null); + action.ApplyAction(context, null, null); // Assert - Assert.Equal(results.Result, RuleTermination.ResponseComplete); + Assert.Equal(context.Result, RuleTermination.ResponseComplete); Assert.Equal(context.HttpContext.Response.StatusCode, StatusCodes.Status403Forbidden); } } diff --git a/test/Microsoft.AspNetCore.Rewrite.Tests/UrlActions/GoneActionTests.cs b/test/Microsoft.AspNetCore.Rewrite.Tests/UrlActions/GoneActionTests.cs index 1daccb17f2..ed061dd929 100644 --- a/test/Microsoft.AspNetCore.Rewrite.Tests/UrlActions/GoneActionTests.cs +++ b/test/Microsoft.AspNetCore.Rewrite.Tests/UrlActions/GoneActionTests.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Rewrite.Internal; using Microsoft.AspNetCore.Rewrite.Internal.UrlActions; using Xunit; @@ -18,10 +17,10 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlActions var action = new GoneAction(); // Act - var results = action.ApplyAction(context, null, null); + action.ApplyAction(context, null, null); // Assert - Assert.Equal(results.Result, RuleTermination.ResponseComplete); + Assert.Equal(context.Result, RuleTermination.ResponseComplete); Assert.Equal(context.HttpContext.Response.StatusCode, StatusCodes.Status410Gone); } } diff --git a/test/Microsoft.AspNetCore.Rewrite.Tests/UrlRewrite/UrlRewriteApplicationTests.cs b/test/Microsoft.AspNetCore.Rewrite.Tests/UrlRewrite/UrlRewriteApplicationTests.cs index 6d6864d398..8892155eff 100644 --- a/test/Microsoft.AspNetCore.Rewrite.Tests/UrlRewrite/UrlRewriteApplicationTests.cs +++ b/test/Microsoft.AspNetCore.Rewrite.Tests/UrlRewrite/UrlRewriteApplicationTests.cs @@ -24,10 +24,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite "); var rules = new UrlRewriteFileParser().Parse(xml); - + Assert.Equal(rules.Count, 1); - var ruleResults = rules.FirstOrDefault().ApplyRule(new RewriteContext {HttpContext = new DefaultHttpContext()}); - Assert.Equal(ruleResults.Result, RuleTermination.StopRules); + var context = new RewriteContext { HttpContext = new DefaultHttpContext() }; + rules.FirstOrDefault().ApplyRule(context); + Assert.Equal(context.Result, RuleTermination.StopRules); } [Fact] @@ -44,8 +45,9 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite var rules = new UrlRewriteFileParser().Parse(xml); Assert.Equal(rules.Count, 1); - var ruleResults = rules.FirstOrDefault().ApplyRule(new RewriteContext { HttpContext = new DefaultHttpContext() }); - Assert.Equal(ruleResults.Result, RuleTermination.Continue); + var context = new RewriteContext { HttpContext = new DefaultHttpContext() }; + rules.FirstOrDefault().ApplyRule(context); + Assert.Equal(context.Result, RuleTermination.Continue); } } }