PR feedback to StatusCode filter.
This commit is contained in:
parent
f3393db4f4
commit
1f98918f1f
|
|
@ -1,6 +1,7 @@
|
|||
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using Microsoft.AspNet.Diagnostics;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc
|
||||
|
|
@ -8,10 +9,16 @@ namespace Microsoft.AspNet.Mvc
|
|||
/// <summary>
|
||||
/// Filter to prevent StatusCodePages middleware to handle responses.
|
||||
/// </summary>
|
||||
public class SkipStatusCodePagesAttribute : ResultFilterAttribute
|
||||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
|
||||
public class SkipStatusCodePagesAttribute : Attribute, IResourceFilter
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void OnResultExecuted(ResultExecutedContext context)
|
||||
public void OnResourceExecuted([NotNull]ResourceExecutedContext context)
|
||||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void OnResourceExecuting([NotNull]ResourceExecutingContext context)
|
||||
{
|
||||
var statusCodeFeature = context.HttpContext.GetFeature<IStatusCodePagesFeature>();
|
||||
if (statusCodeFeature != null)
|
||||
|
|
@ -19,8 +26,6 @@ namespace Microsoft.AspNet.Mvc
|
|||
// Turn off the StatusCodePages feature.
|
||||
statusCodeFeature.Enabled = false;
|
||||
}
|
||||
|
||||
base.OnResultExecuted(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -15,12 +15,12 @@ namespace Microsoft.AspNet.Mvc.Core.Test
|
|||
{
|
||||
// Arrange
|
||||
var skipStatusCodeAttribute = new SkipStatusCodePagesAttribute();
|
||||
var resultExecutingContext = CreateResultExecutingContext(new IFilter[] { skipStatusCodeAttribute });
|
||||
var resourceExecutingContext = CreateResourceExecutingContext(new IFilter[] { skipStatusCodeAttribute });
|
||||
var statusCodePagesFeature = new TestStatusCodeFeature();
|
||||
resultExecutingContext.HttpContext.SetFeature<IStatusCodePagesFeature>(statusCodePagesFeature);
|
||||
resourceExecutingContext.HttpContext.SetFeature<IStatusCodePagesFeature>(statusCodePagesFeature);
|
||||
|
||||
// Act
|
||||
skipStatusCodeAttribute.OnResultExecuted(CreateResultExecutedContext(resultExecutingContext));
|
||||
skipStatusCodeAttribute.OnResourceExecuting(resourceExecutingContext);
|
||||
|
||||
// Assert
|
||||
Assert.False(statusCodePagesFeature.Enabled);
|
||||
|
|
@ -31,24 +31,17 @@ namespace Microsoft.AspNet.Mvc.Core.Test
|
|||
{
|
||||
// Arrange
|
||||
var skipStatusCodeAttribute = new SkipStatusCodePagesAttribute();
|
||||
var resultExecutingContext = CreateResultExecutingContext(new IFilter[] { skipStatusCodeAttribute });
|
||||
var resourceExecutingContext = CreateResourceExecutingContext(new IFilter[] { skipStatusCodeAttribute });
|
||||
|
||||
// Act
|
||||
skipStatusCodeAttribute.OnResultExecuted(CreateResultExecutedContext(resultExecutingContext));
|
||||
skipStatusCodeAttribute.OnResourceExecuting(resourceExecutingContext);
|
||||
}
|
||||
|
||||
private static ResultExecutedContext CreateResultExecutedContext(ResultExecutingContext context)
|
||||
private static ResourceExecutingContext CreateResourceExecutingContext(IFilter[] filters)
|
||||
{
|
||||
return new ResultExecutedContext(context, context.Filters, context.Result, context.Controller);
|
||||
}
|
||||
|
||||
private static ResultExecutingContext CreateResultExecutingContext(IFilter[] filters)
|
||||
{
|
||||
return new ResultExecutingContext(
|
||||
return new ResourceExecutingContext(
|
||||
CreateActionContext(),
|
||||
filters,
|
||||
new ObjectResult("Some Value"),
|
||||
controller: new object());
|
||||
filters);
|
||||
}
|
||||
|
||||
private static ActionContext CreateActionContext()
|
||||
|
|
|
|||
Loading…
Reference in New Issue