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