Use new HttpContext.Features API.

This commit is contained in:
Chris R 2015-08-31 09:16:02 -07:00
parent 66a7c2e389
commit dd737ce946
14 changed files with 23 additions and 17 deletions

View File

@ -69,7 +69,7 @@ namespace Microsoft.AspNet.Mvc
throw new FileNotFoundException(Resources.FormatFileResult_InvalidPath(FileName), FileName); throw new FileNotFoundException(Resources.FormatFileResult_InvalidPath(FileName), FileName);
} }
var sendFile = response.HttpContext.GetFeature<IHttpSendFileFeature>(); var sendFile = response.HttpContext.Features.Get<IHttpSendFileFeature>();
if (sendFile != null) if (sendFile != null)
{ {
await sendFile.SendFileAsync( await sendFile.SendFileAsync(

View File

@ -86,7 +86,7 @@ namespace Microsoft.AspNet.Mvc
if (fileInfo.Exists) if (fileInfo.Exists)
{ {
var physicalPath = fileInfo.PhysicalPath; var physicalPath = fileInfo.PhysicalPath;
var sendFile = response.HttpContext.GetFeature<IHttpSendFileFeature>(); var sendFile = response.HttpContext.Features.Get<IHttpSendFileFeature>();
if (sendFile != null && !string.IsNullOrEmpty(physicalPath)) if (sendFile != null && !string.IsNullOrEmpty(physicalPath))
{ {
await sendFile.SendFileAsync( await sendFile.SendFileAsync(

View File

@ -5,6 +5,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Http.Features;
using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.PageExecutionInstrumentation; using Microsoft.AspNet.PageExecutionInstrumentation;
using Microsoft.Framework.Internal; using Microsoft.Framework.Internal;
@ -68,7 +69,7 @@ namespace Microsoft.AspNet.Mvc.Razor
/// <inheritdoc /> /// <inheritdoc />
public virtual async Task RenderAsync([NotNull] ViewContext context) public virtual async Task RenderAsync([NotNull] ViewContext context)
{ {
_pageExecutionFeature = context.HttpContext.GetFeature<IPageExecutionListenerFeature>(); _pageExecutionFeature = context.HttpContext.Features.Get<IPageExecutionListenerFeature>();
// Partials don't execute _ViewStart pages, but may execute Layout pages if the Layout property // Partials don't execute _ViewStart pages, but may execute Layout pages if the Layout property
// is explicitly specified in the page. // is explicitly specified in the page.

View File

@ -3,6 +3,7 @@
using System; using System;
using Microsoft.AspNet.Diagnostics; using Microsoft.AspNet.Diagnostics;
using Microsoft.AspNet.Http.Features;
using Microsoft.Framework.Internal; using Microsoft.Framework.Internal;
namespace Microsoft.AspNet.Mvc namespace Microsoft.AspNet.Mvc
@ -21,7 +22,7 @@ namespace Microsoft.AspNet.Mvc
/// <inheritdoc /> /// <inheritdoc />
public void OnResourceExecuting([NotNull]ResourceExecutingContext context) public void OnResourceExecuting([NotNull]ResourceExecutingContext context)
{ {
var statusCodeFeature = context.HttpContext.GetFeature<IStatusCodePagesFeature>(); var statusCodeFeature = context.HttpContext.Features.Get<IStatusCodePagesFeature>();
if (statusCodeFeature != null) if (statusCodeFeature != null)
{ {
// Turn off the StatusCodePages feature. // Turn off the StatusCodePages feature.

View File

@ -183,7 +183,7 @@ namespace Microsoft.AspNet.Mvc
private static bool IsSessionEnabled(HttpContext context) private static bool IsSessionEnabled(HttpContext context)
{ {
return context.GetFeature<ISessionFeature>() != null; return context.Features.Get<ISessionFeature>() != null;
} }
internal void EnsureObjectCanBeSerialized(object item) internal void EnsureObjectCanBeSerialized(object item)

View File

@ -36,7 +36,7 @@ namespace Microsoft.AspNet.Mvc.WebApiCompatShim
{ {
response.StatusCode = (int)responseMessage.StatusCode; response.StatusCode = (int)responseMessage.StatusCode;
var responseFeature = context.HttpContext.GetFeature<IHttpResponseFeature>(); var responseFeature = context.HttpContext.Features.Get<IHttpResponseFeature>();
if (responseFeature != null) if (responseFeature != null)
{ {
responseFeature.ReasonPhrase = responseMessage.ReasonPhrase; responseFeature.ReasonPhrase = responseMessage.ReasonPhrase;

View File

@ -3,6 +3,7 @@
using System.Net.Http; using System.Net.Http;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.AspNet.Http.Features;
namespace Microsoft.AspNet.Mvc.WebApiCompatShim namespace Microsoft.AspNet.Mvc.WebApiCompatShim
{ {
@ -10,11 +11,11 @@ namespace Microsoft.AspNet.Mvc.WebApiCompatShim
{ {
public static HttpRequestMessage GetHttpRequestMessage(this HttpContext httpContext) public static HttpRequestMessage GetHttpRequestMessage(this HttpContext httpContext)
{ {
var feature = httpContext.GetFeature<IHttpRequestMessageFeature>(); var feature = httpContext.Features.Get<IHttpRequestMessageFeature>();
if (feature == null) if (feature == null)
{ {
feature = new HttpRequestMessageFeature(httpContext); feature = new HttpRequestMessageFeature(httpContext);
httpContext.SetFeature(feature); httpContext.Features.Set(feature);
} }
return feature.HttpRequestMessage; return feature.HttpRequestMessage;

View File

@ -61,7 +61,7 @@ namespace Microsoft.AspNet.Mvc
.Returns(Task.FromResult<int>(0)); .Returns(Task.FromResult<int>(0));
var httpContext = new DefaultHttpContext(); var httpContext = new DefaultHttpContext();
httpContext.SetFeature(sendFileMock.Object); httpContext.Features.Set(sendFileMock.Object);
var context = new ActionContext(httpContext, new RouteData(), new ActionDescriptor()); var context = new ActionContext(httpContext, new RouteData(), new ActionDescriptor());
// Act // Act

View File

@ -100,7 +100,7 @@ namespace Microsoft.AspNet.Mvc
.Returns(Task.FromResult<int>(0)); .Returns(Task.FromResult<int>(0));
var httpContext = new DefaultHttpContext(); var httpContext = new DefaultHttpContext();
httpContext.SetFeature(sendFileMock.Object); httpContext.Features.Set(sendFileMock.Object);
var context = new ActionContext(httpContext, new RouteData(), new ActionDescriptor()); var context = new ActionContext(httpContext, new RouteData(), new ActionDescriptor());
// Act // Act

View File

@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Http.Features;
using Microsoft.AspNet.Http.Internal; using Microsoft.AspNet.Http.Internal;
using Microsoft.AspNet.Mvc.ModelBinding; using Microsoft.AspNet.Mvc.ModelBinding;
using Microsoft.AspNet.PageExecutionInstrumentation; using Microsoft.AspNet.PageExecutionInstrumentation;
@ -1096,7 +1097,7 @@ namespace Microsoft.AspNet.Mvc.Razor
page, page,
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
viewContext.HttpContext.SetFeature<IPageExecutionListenerFeature>(feature.Object); viewContext.HttpContext.Features.Set<IPageExecutionListenerFeature>(feature.Object);
// Act // Act
await view.RenderAsync(viewContext); await view.RenderAsync(viewContext);
@ -1142,7 +1143,7 @@ namespace Microsoft.AspNet.Mvc.Razor
isPartial: true); isPartial: true);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
viewContext.Writer = writer; viewContext.Writer = writer;
viewContext.HttpContext.SetFeature<IPageExecutionListenerFeature>(feature.Object); viewContext.HttpContext.Features.Set<IPageExecutionListenerFeature>(feature.Object);
// Act // Act
await view.RenderAsync(viewContext); await view.RenderAsync(viewContext);

View File

@ -2,6 +2,7 @@
// 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 Microsoft.AspNet.Diagnostics; using Microsoft.AspNet.Diagnostics;
using Microsoft.AspNet.Http.Features;
using Microsoft.AspNet.Http.Internal; using Microsoft.AspNet.Http.Internal;
using Microsoft.AspNet.Routing; using Microsoft.AspNet.Routing;
using Xunit; using Xunit;
@ -17,7 +18,7 @@ namespace Microsoft.AspNet.Mvc.Core.Test
var skipStatusCodeAttribute = new SkipStatusCodePagesAttribute(); var skipStatusCodeAttribute = new SkipStatusCodePagesAttribute();
var resourceExecutingContext = CreateResourceExecutingContext(new IFilterMetadata[] { skipStatusCodeAttribute }); var resourceExecutingContext = CreateResourceExecutingContext(new IFilterMetadata[] { skipStatusCodeAttribute });
var statusCodePagesFeature = new TestStatusCodeFeature(); var statusCodePagesFeature = new TestStatusCodeFeature();
resourceExecutingContext.HttpContext.SetFeature<IStatusCodePagesFeature>(statusCodePagesFeature); resourceExecutingContext.HttpContext.Features.Set<IStatusCodePagesFeature>(statusCodePagesFeature);
// Act // Act
skipStatusCodeAttribute.OnResourceExecuting(resourceExecutingContext); skipStatusCodeAttribute.OnResourceExecuting(resourceExecutingContext);

View File

@ -352,7 +352,7 @@ namespace Microsoft.AspNet.Mvc
var httpContext = new DefaultHttpContext(); var httpContext = new DefaultHttpContext();
if(sessionEnabled) if(sessionEnabled)
{ {
httpContext.SetFeature<ISessionFeature>(new SessionFeature() { Session = session }); httpContext.Features.Set<ISessionFeature>(new SessionFeature() { Session = session });
} }
return httpContext; return httpContext;
} }

View File

@ -26,10 +26,10 @@ namespace FilesWebSite
{ {
var environment = (IApplicationEnvironment)context.RequestServices.GetService(typeof(IApplicationEnvironment)); var environment = (IApplicationEnvironment)context.RequestServices.GetService(typeof(IApplicationEnvironment));
if (context.GetFeature<IHttpSendFileFeature>() == null) if (context.Features.Get<IHttpSendFileFeature>() == null)
{ {
var sendFile = new SendFileFallBack(context.Response.Body, environment.ApplicationBasePath); var sendFile = new SendFileFallBack(context.Response.Body, environment.ApplicationBasePath);
context.SetFeature<IHttpSendFileFeature>(sendFile); context.Features.Set<IHttpSendFileFeature>(sendFile);
} }
await _next(context); await _next(context);

View File

@ -5,6 +5,7 @@ using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.AspNet.Http.Features;
using Microsoft.AspNet.Mvc.Razor.Compilation; using Microsoft.AspNet.Mvc.Razor.Compilation;
using Microsoft.AspNet.PageExecutionInstrumentation; using Microsoft.AspNet.PageExecutionInstrumentation;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
@ -34,7 +35,7 @@ namespace RazorPageExecutionInstrumentationWebSite
{ {
var pageExecutionContext = context.ApplicationServices.GetRequiredService<TestPageExecutionContext>(); var pageExecutionContext = context.ApplicationServices.GetRequiredService<TestPageExecutionContext>();
var listenerFeature = new TestPageExecutionListenerFeature(pageExecutionContext); var listenerFeature = new TestPageExecutionListenerFeature(pageExecutionContext);
context.SetFeature<IPageExecutionListenerFeature>(listenerFeature); context.Features.Set<IPageExecutionListenerFeature>(listenerFeature);
} }
await next(); await next();