Cleanup usage of HTTP property keys.

This commit is contained in:
davidmatson 2013-08-06 13:53:10 -07:00
Родитель c352a01d9c
Коммит 035cb96e8e
40 изменённых файлов: 157 добавлений и 103 удалений

Просмотреть файл

@ -147,7 +147,7 @@ namespace System.Web.Http.Cors
private static HttpActionDescriptor SelectAction(HttpRequestMessage request, IHttpRouteData routeData, HttpConfiguration config)
{
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
request.SetRouteData(routeData);
RemoveOptionalRoutingParameters(routeData.Values);

Просмотреть файл

@ -93,7 +93,7 @@ namespace System.Web.Http.WebHost
HttpRequestMessage request = contextBase.GetHttpRequestMessage() ?? ConvertRequest(contextBase);
// Add route data
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = _routeData;
request.SetRouteData(_routeData);
HttpResponseMessage response = await _server.SendAsync(request, CancellationToken.None);
await ConvertResponse(contextBase, response, request);

Просмотреть файл

@ -201,7 +201,7 @@ namespace System.Web.Http
if (Request != null)
{
Request.Properties[HttpPropertyKeys.HttpActionDescriptorKey] = actionDescriptor;
Request.SetActionDescriptor(actionDescriptor);
}
HttpActionContext actionContext = new HttpActionContext(controllerContext, actionDescriptor);

Просмотреть файл

@ -110,13 +110,13 @@ namespace System.Web.Http.Dispatcher
HttpConfiguration requestConfig = request.GetConfiguration();
if (requestConfig == null)
{
request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, httpControllerDescriptor.Configuration);
request.SetConfiguration(httpControllerDescriptor.Configuration);
}
else
{
if (requestConfig != httpControllerDescriptor.Configuration)
{
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = httpControllerDescriptor.Configuration;
request.SetConfiguration(httpControllerDescriptor.Configuration);
}
}

Просмотреть файл

@ -62,13 +62,13 @@ namespace System.Web.Http.Dispatcher
{
// Lookup route data, or if not found as a request property then we look it up in the route table
IHttpRouteData routeData;
if (!request.Properties.TryGetValue(HttpPropertyKeys.HttpRouteDataKey, out routeData))
if (!request.TryGetRouteData(out routeData))
{
routeData = _configuration.Routes.GetRouteData(request);
if (routeData != null)
{
request.Properties.Add(HttpPropertyKeys.HttpRouteDataKey, routeData);
request.SetRouteData(routeData);
}
else
{

Просмотреть файл

@ -105,6 +105,16 @@ namespace System.Net.Http
return request.GetProperty<SynchronizationContext>(HttpPropertyKeys.SynchronizationContextKey);
}
internal static void SetSynchronizationContext(this HttpRequestMessage request, SynchronizationContext syncronizationContext)
{
if (request == null)
{
throw Error.ArgumentNull("request");
}
request.Properties[HttpPropertyKeys.SynchronizationContextKey] = syncronizationContext;
}
/// <summary>
/// Gets the current <see cref="T:System.Security.Cryptography.X509Certificates.X509Certificate2"/> or null if not available.
/// </summary>
@ -172,6 +182,16 @@ namespace System.Net.Http
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
}
internal static bool TryGetRouteData(this HttpRequestMessage request, out IHttpRouteData routeData)
{
if (request == null)
{
throw Error.ArgumentNull("request");
}
return request.Properties.TryGetValue<IHttpRouteData>(HttpPropertyKeys.HttpRouteDataKey, out routeData);
}
/// <summary>
/// Gets the <see cref="System.Web.Http.Controllers.HttpActionDescriptor"/> selected for the given request or null if not available.
/// </summary>
@ -187,6 +207,16 @@ namespace System.Net.Http
return request.GetProperty<HttpActionDescriptor>(HttpPropertyKeys.HttpActionDescriptorKey);
}
internal static void SetActionDescriptor(this HttpRequestMessage request, HttpActionDescriptor actionDescriptor)
{
if (request == null)
{
throw Error.ArgumentNull("request");
}
request.Properties[HttpPropertyKeys.HttpActionDescriptorKey] = actionDescriptor;
}
private static T GetProperty<T>(this HttpRequestMessage request, string key)
{
T value;

Просмотреть файл

@ -145,11 +145,11 @@ namespace System.Web.Http
SynchronizationContext context = SynchronizationContext.Current;
if (context != null)
{
request.Properties.Add(HttpPropertyKeys.SynchronizationContextKey, context);
request.SetSynchronizationContext(context);
}
// Add HttpConfiguration object as a parameter to the request
request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, _configuration);
request.SetConfiguration(_configuration);
// Ensure we have a principal, even if the host didn't give us one
IPrincipal originalPrincipal = Thread.CurrentPrincipal;

Просмотреть файл

@ -34,9 +34,9 @@ namespace System.Web.Http.Cors
request.Headers.Add("Origin", "http://localhost");
request.Headers.Add(CorsConstants.AccessControlRequestMethod, httpMethod);
HttpConfiguration config = new HttpConfiguration();
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
IHttpRoute route = config.Routes.MapHttpRoute("default", "{controller}/{id}", new { id = RouteParameter.Optional });
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = route.GetRouteData("/", request);
request.SetRouteData(route.GetRouteData("/", request));
ICorsPolicyProvider provider = providerFactory.GetCorsPolicyProvider(request);
@ -55,7 +55,7 @@ namespace System.Web.Http.Cors
request.Headers.Add(CorsConstants.AccessControlRequestMethod, "GET");
HttpConfiguration config = new HttpConfiguration();
IHttpRoute route = config.Routes.MapHttpRoute("default", "{controller}/{id}", new { id = RouteParameter.Optional });
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = route.GetRouteData("/", request);
request.SetRouteData(route.GetRouteData("/", request));
Assert.Throws<InvalidOperationException>(() =>
providerFactory.GetCorsPolicyProvider(request),
@ -72,7 +72,7 @@ namespace System.Web.Http.Cors
request.Headers.Add("Origin", "http://localhost");
request.Headers.Add(CorsConstants.AccessControlRequestMethod, "GET");
HttpConfiguration config = new HttpConfiguration();
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
var provider = providerFactory.GetCorsPolicyProvider(request);
@ -89,9 +89,9 @@ namespace System.Web.Http.Cors
request.Headers.Add("Origin", "http://localhost");
request.Headers.Add(CorsConstants.AccessControlRequestMethod, "RandomMethod");
HttpConfiguration config = new HttpConfiguration();
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
IHttpRoute route = config.Routes.MapHttpRoute("default", "{controller}/{id}", new { id = RouteParameter.Optional });
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = route.GetRouteData("/", request);
request.SetRouteData(route.GetRouteData("/", request));
ICorsPolicyProvider provider = providerFactory.GetCorsPolicyProvider(request);
@ -107,9 +107,9 @@ namespace System.Web.Http.Cors
request.Headers.Add("Origin", "http://localhost");
request.Headers.Add(CorsConstants.AccessControlRequestMethod, "RandomMethod");
HttpConfiguration config = new HttpConfiguration();
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
IHttpRoute route = config.Routes.MapHttpRoute("default", "{controller}/{id}", new { id = RouteParameter.Optional });
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = route.GetRouteData("/", request);
request.SetRouteData(route.GetRouteData("/", request));
Assert.True(request.GetCorsRequestContext().IsPreflight);
Assert.Throws<HttpResponseException>(() =>
@ -124,10 +124,10 @@ namespace System.Web.Http.Cors
providerFactory.DefaultPolicyProvider = mockProvider;
HttpRequestMessage request = new HttpRequestMessage();
Func<string> action = new DefaultController().Get;
request.Properties[HttpPropertyKeys.HttpActionDescriptorKey] = new ReflectedHttpActionDescriptor
request.SetActionDescriptor(new ReflectedHttpActionDescriptor
{
MethodInfo = action.Method
};
});
request.Headers.Add("Origin", "http://example.com");
ICorsPolicyProvider policyProvider = providerFactory.GetCorsPolicyProvider(request);
@ -146,11 +146,11 @@ namespace System.Web.Http.Cors
ControllerName = "Sample",
ControllerType = typeof(SampleController)
};
request.Properties[HttpPropertyKeys.HttpActionDescriptorKey] = new ReflectedHttpActionDescriptor
request.SetActionDescriptor(new ReflectedHttpActionDescriptor
{
MethodInfo = action.Method,
ControllerDescriptor = controllerDescriptor
};
});
request.Headers.Add("Origin", "http://example.com");
ICorsPolicyProvider policyProvider = providerFactory.GetCorsPolicyProvider(request);
@ -165,10 +165,10 @@ namespace System.Web.Http.Cors
AttributeBasedPolicyProviderFactory providerFactory = new AttributeBasedPolicyProviderFactory();
HttpRequestMessage request = new HttpRequestMessage();
Func<string> action = new SampleController().Post;
request.Properties[HttpPropertyKeys.HttpActionDescriptorKey] = new ReflectedHttpActionDescriptor
request.SetActionDescriptor(new ReflectedHttpActionDescriptor
{
MethodInfo = action.Method
};
});
request.Headers.Add("Origin", "http://example.com");
ICorsPolicyProvider policyProvider = providerFactory.GetCorsPolicyProvider(request);

Просмотреть файл

@ -67,7 +67,7 @@ namespace System.Web.Http.Cors
corsHandler.InnerHandler = server;
HttpMessageInvoker invoker = new HttpMessageInvoker(corsHandler);
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Options, "http://localhost/sample");
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
request.Headers.Add(CorsConstants.Origin, "http://localhost");
request.Headers.Add(CorsConstants.AccessControlRequestMethod, requestedMethod);
request.Headers.Add(CorsConstants.AccessControlRequestHeaders, requestedHeaders);
@ -152,7 +152,7 @@ namespace System.Web.Http.Cors
corsHandler.InnerHandler = server;
HttpMessageInvoker invoker = new HttpMessageInvoker(corsHandler);
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Options, "http://localhost/sample");
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
request.Headers.Add(CorsConstants.Origin, "http://localhost");
request.Headers.Add(CorsConstants.AccessControlRequestMethod, "RandomMethod");

Просмотреть файл

@ -0,0 +1,21 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
using System.Net.Http;
using System.Web.Http.Controllers;
using System.Web.Http.Hosting;
namespace System.Web.Http.Cors
{
internal static class HttpRequestMethodExtensions
{
public static void SetActionDescriptor(this HttpRequestMessage request, HttpActionDescriptor actionDescriptor)
{
if (request == null)
{
throw new ArgumentNullException("request");
}
request.Properties[HttpPropertyKeys.HttpActionDescriptorKey] = actionDescriptor;
}
}
}

Просмотреть файл

@ -70,6 +70,7 @@
<Compile Include="CorsHttpConfigurationExtensionsTest.cs" />
<Compile Include="CorsHttpRequestMessageExtensionsTest.cs" />
<Compile Include="CorsHttpResponseMessageExtensionsTest.cs" />
<Compile Include="HttpRequestMethodExtensions.cs" />
<Compile Include="Tracing\CorsEngineTracerTest.cs" />
<Compile Include="Tracing\CorsPolicyProviderFactoryTracerTest.cs" />
<Compile Include="Tracing\CorsPolicyProviderTracerTest.cs" />

Просмотреть файл

@ -2,6 +2,7 @@
using System.Net;
using System.Net.Http;
using System.Web.Http.Hosting;
using Microsoft.TestCommon;
using Newtonsoft.Json.Linq;
@ -54,10 +55,10 @@ namespace System.Web.Http
string controllerName = "Exception";
string requestUrl = String.Format("{0}/{1}/{2}", "http://www.foo.com", controllerName, "ArgumentNull");
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUrl);
request.Properties["MS_IsLocal"] = new Lazy<bool>(() => isLocal);
request.Properties[HttpPropertyKeys.IsLocalKey] = new Lazy<bool>(() => isLocal);
if (customErrors != null)
{
request.Properties["MS_IncludeErrorDetail"] = new Lazy<bool>(() => !(bool)customErrors);
request.Properties[HttpPropertyKeys.IncludeErrorDetailKey] = new Lazy<bool>(() => !(bool)customErrors);
}
ScenarioHelper.RunTest(

Просмотреть файл

@ -46,8 +46,8 @@ namespace System.Web.Http
HttpConfiguration config = configuration ?? new HttpConfiguration();
IHttpRouteData route = routeData ?? new HttpRouteData(new HttpRoute());
HttpRequestMessage req = request ?? new HttpRequestMessage();
req.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
req.Properties[HttpPropertyKeys.HttpRouteDataKey] = route;
req.SetConfiguration(config);
req.SetRouteData(route);
return new HttpControllerContext(config, route, req) { ControllerDescriptor = new HttpControllerDescriptor(config) };
}

Просмотреть файл

@ -245,7 +245,7 @@ namespace System.Web.Http.OData
string routeName = "Route";
config.Routes.MapODataRoute(routeName, null, model);
HttpRequestMessage request = new HttpRequestMessage(new HttpMethod("Mock"), "http://localhost/People");
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
request.SetODataPath(new DefaultODataPathHandler().Parse(model, "People"));
request.SetODataRouteName(routeName);
controller.Request = request;

Просмотреть файл

@ -20,7 +20,7 @@ namespace System.Web.Http.OData
{
ApiController controller = new Mock<ApiController>().Object;
var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/Customers");
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration();
request.SetConfiguration(new HttpConfiguration());
controller.Request = request;
Assert.Throws<InvalidOperationException>(
@ -33,7 +33,7 @@ namespace System.Web.Http.OData
{
ApiController controller = new Mock<ApiController>().Object;
var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/Customers");
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration();
request.SetConfiguration(new HttpConfiguration());
request.SetODataPath(new ODataPath(new MetadataPathSegment()));
controller.Request = request;

Просмотреть файл

@ -244,7 +244,7 @@ namespace System.Web.Http.OData
string routeName = "Route";
config.Routes.MapODataRoute(routeName, null, model);
HttpRequestMessage request = new HttpRequestMessage(new HttpMethod("Mock"), "http://localhost/People");
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
request.SetODataPath(new DefaultODataPathHandler().Parse(model, "People"));
request.SetODataRouteName(routeName);
controller.Request = request;

Просмотреть файл

@ -152,7 +152,7 @@ namespace System.Web.Http.OData.Formatter
HttpRouteData routeData = new HttpRouteData(new HttpRoute());
routeData.Values.Add("a", "prefix");
routeData.Values.Add("b", "prefix2");
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
request.SetRouteData(routeData);
ODataMediaTypeFormatter formatter = CreateFormatter(model, request, ODataPayloadKind.ServiceDocument);
var content = new ObjectContent<ODataWorkspace>(new ODataWorkspace(), formatter);

Просмотреть файл

@ -20,7 +20,7 @@ namespace System.Web.Http.OData.Routing.Conventions
ILookup<string, HttpActionDescriptor> emptyActionMap = new HttpActionDescriptor[0].ToLookup(desc => (string)null);
HttpControllerContext controllerContext = new HttpControllerContext();
controllerContext.Request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/");
controllerContext.Request.Properties[HttpPropertyKeys.HttpRouteDataKey] = new HttpRouteData(new HttpRoute());
controllerContext.Request.SetRouteData(new HttpRouteData(new HttpRoute()));
string selectedAction = new ActionRoutingConvention().SelectAction(odataPath, controllerContext, emptyActionMap);

Просмотреть файл

@ -22,7 +22,7 @@ namespace System.Web.Http.OData.Routing.Conventions
ILookup<string, HttpActionDescriptor> emptyActionMap = new HttpActionDescriptor[0].ToLookup(desc => (string)null);
HttpControllerContext controllerContext = new HttpControllerContext();
controllerContext.Request = new HttpRequestMessage(new HttpMethod(httpMethod), "http://localhost/");
controllerContext.Request.Properties[HttpPropertyKeys.HttpRouteDataKey] = new HttpRouteData(new HttpRoute());
controllerContext.Request.SetRouteData(new HttpRouteData(new HttpRoute()));
string selectedAction = new EntityRoutingConvention().SelectAction(odataPath, controllerContext, emptyActionMap);

Просмотреть файл

@ -20,7 +20,7 @@ namespace System.Web.Http.OData.Routing.Conventions
ILookup<string, HttpActionDescriptor> emptyActionMap = new HttpActionDescriptor[0].ToLookup(desc => (string)null);
HttpControllerContext controllerContext = new HttpControllerContext();
controllerContext.Request = new HttpRequestMessage(new HttpMethod(httpMethod), "http://localhost/");
controllerContext.Request.Properties[HttpPropertyKeys.HttpRouteDataKey] = new HttpRouteData(new HttpRoute());
controllerContext.Request.SetRouteData(new HttpRouteData(new HttpRoute()));
string selectedAction = new EntitySetRoutingConvention().SelectAction(odataPath, controllerContext, emptyActionMap);

Просмотреть файл

@ -22,7 +22,7 @@ namespace System.Web.Http.OData.Routing.Conventions
ILookup<string, HttpActionDescriptor> emptyActionMap = new HttpActionDescriptor[0].ToLookup(desc => (string)null);
HttpControllerContext controllerContext = new HttpControllerContext();
controllerContext.Request = new HttpRequestMessage(new HttpMethod(httpMethod), "http://localhost/");
controllerContext.Request.Properties[HttpPropertyKeys.HttpRouteDataKey] = new HttpRouteData(new HttpRoute());
controllerContext.Request.SetRouteData(new HttpRouteData(new HttpRoute()));
string selectedAction = new LinksRoutingConvention().SelectAction(odataPath, controllerContext, emptyActionMap);

Просмотреть файл

@ -18,7 +18,7 @@ namespace System.Web.Http.OData.Routing.Conventions
ILookup<string, HttpActionDescriptor> emptyActionMap = new HttpActionDescriptor[0].ToLookup(desc => (string)null);
HttpControllerContext controllerContext = new HttpControllerContext();
controllerContext.Request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/");
controllerContext.Request.Properties[HttpPropertyKeys.HttpRouteDataKey] = new HttpRouteData(new HttpRoute());
controllerContext.Request.SetRouteData(new HttpRouteData(new HttpRoute()));
string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, emptyActionMap);

Просмотреть файл

@ -18,7 +18,7 @@ namespace System.Web.Http.OData.Routing.Conventions
ILookup<string, HttpActionDescriptor> emptyActionMap = new HttpActionDescriptor[0].ToLookup(desc => (string)null);
HttpControllerContext controllerContext = new HttpControllerContext();
controllerContext.Request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/");
controllerContext.Request.Properties[HttpPropertyKeys.HttpRouteDataKey] = new HttpRouteData(new HttpRoute());
controllerContext.Request.SetRouteData(new HttpRouteData(new HttpRoute()));
string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, emptyActionMap);

Просмотреть файл

@ -2,6 +2,7 @@
using System.Linq;
using System.Web.Http;
using System.Web.Http.Hosting;
using System.Web.Http.OData.Routing;
using Microsoft.Data.Edm;
using Microsoft.Data.Edm.Library;
@ -87,14 +88,14 @@ namespace System.Net.Http
{
HttpConfiguration config = new HttpConfiguration() { IncludeErrorDetailPolicy = errorDetail };
HttpRequestMessage request = new HttpRequestMessage();
request.Properties.Add("MS_HttpConfiguration", config);
request.SetConfiguration(config);
if (isLocal.HasValue)
{
request.Properties.Add("MS_IsLocal", new Lazy<bool>(() => isLocal.Value));
request.Properties.Add(HttpPropertyKeys.IsLocalKey, new Lazy<bool>(() => isLocal.Value));
}
if (includeErrorDetail.HasValue)
{
request.Properties.Add("MS_IncludeErrorDetail", new Lazy<bool>(() => includeErrorDetail.Value));
request.Properties.Add(HttpPropertyKeys.IncludeErrorDetailKey, new Lazy<bool>(() => includeErrorDetail.Value));
}
ODataError error = new ODataError()
{

Просмотреть файл

@ -66,7 +66,6 @@
<Link>TestCommon\ContextUtil.cs</Link>
</Compile>
<Compile Include="ODataHttpRouteCollectionExtensionsTest.cs" />
<Compile Include="HttpRequestMessageExtensions.cs" />
<Compile Include="HttpRouteCollectionExtensions.cs" />
<Compile Include="ODataHttpRequestMessageExtensionsTest.cs" />
<Compile Include="ODataHttpErrorExtensionsTest.cs" />

Просмотреть файл

@ -514,7 +514,7 @@ namespace System.Web.Http.Owin
if (AddNoRouteMatchedKey)
{
request.Properties["MS_NoRouteMatched"] = true;
request.Properties[HttpPropertyKeys.NoRouteMatched] = true;
}
return TaskHelpers.FromResult<HttpResponseMessage>(Response);

Просмотреть файл

@ -19,7 +19,7 @@ namespace System.Web.Http.Dispatcher
// Arrange
var config = new HttpConfiguration();
var request = new HttpRequestMessage();
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
var descriptor = new HttpControllerDescriptor(config, "Simple", typeof(SimpleController));
var activator = new DefaultHttpControllerActivator();
@ -41,7 +41,7 @@ namespace System.Web.Http.Dispatcher
// Arrange
var config = new HttpConfiguration();
var request = new HttpRequestMessage();
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
var descriptor = new HttpControllerDescriptor(config, "Simple", typeof(SimpleController));
var activator = new DefaultHttpControllerActivator();
@ -62,7 +62,7 @@ namespace System.Web.Http.Dispatcher
mockScope.Setup(r => r.GetService(typeof(ControllerWithCtorParams))).Returns(controller).Verifiable();
var config = new HttpConfiguration();
var request = new HttpRequestMessage();
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
request.Properties[HttpPropertyKeys.DependencyScope] = mockScope.Object;
var descriptor = new HttpControllerDescriptor(config, "Name", typeof(ControllerWithCtorParams));
var activator = new DefaultHttpControllerActivator();
@ -89,7 +89,7 @@ namespace System.Web.Http.Dispatcher
}).Verifiable();
var config = new HttpConfiguration();
var request = new HttpRequestMessage();
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
request.Properties[HttpPropertyKeys.DependencyScope] = mockScope.Object;
var descriptor = new HttpControllerDescriptor(config, "Name", typeof(ControllerWithCtorParams));
var activator = new DefaultHttpControllerActivator();
@ -113,7 +113,7 @@ namespace System.Web.Http.Dispatcher
mockScope.Setup(r => r.GetService(typeof(ControllerWithCtorParams))).Returns(controller).Verifiable();
var config = new HttpConfiguration();
var request = new HttpRequestMessage();
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
request.Properties[HttpPropertyKeys.DependencyScope] = mockScope.Object;
var descriptorControllerWithCtorParamsResult = new HttpControllerDescriptor(config, "Name", typeof(ControllerWithCtorParams));
var descriptorSimpleController = new HttpControllerDescriptor(config, "Simple", typeof(SimpleController));
@ -139,7 +139,7 @@ namespace System.Web.Http.Dispatcher
mockResolver.Setup(resolver => resolver.BeginScope()).Returns((IDependencyScope)null).Verifiable();
config.DependencyResolver = mockResolver.Object;
var request = new HttpRequestMessage();
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
var descriptorSimpleController = new HttpControllerDescriptor(config, "Simple", typeof(SimpleController));
var activator = new DefaultHttpControllerActivator();

Просмотреть файл

@ -33,7 +33,7 @@ namespace System.Web.Http.Dispatcher
HttpRequestMessage request = new HttpRequestMessage();
IHttpRouteData routeData = GetRouteData();
routeData.Values[controllerKeyName] = controllerName;
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
request.SetRouteData(routeData);
DefaultHttpControllerSelector selector = new DefaultHttpControllerSelector(new HttpConfiguration());
// Act
@ -62,7 +62,7 @@ namespace System.Web.Http.Dispatcher
{
// Arrange
HttpRequestMessage request = new HttpRequestMessage();
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = GetRouteData();
request.SetRouteData(GetRouteData());
DefaultHttpControllerSelector selector = new DefaultHttpControllerSelector(new HttpConfiguration());
// Act
@ -88,7 +88,7 @@ namespace System.Web.Http.Dispatcher
HttpRequestMessage request = new HttpRequestMessage();
IHttpRouteData routeData = GetRouteData();
routeData.Values["controller"] = "Sample";
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
request.SetRouteData(routeData);
// Act
selector.SelectController(request);
@ -115,7 +115,7 @@ namespace System.Web.Http.Dispatcher
HttpRequestMessage request = new HttpRequestMessage();
IHttpRouteData routeData = GetRouteData();
routeData.Values["controller"] = controllerTypeName;
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
request.SetRouteData(routeData);
DefaultHttpControllerSelector selector = new DefaultHttpControllerSelector(configuration);
@ -142,7 +142,7 @@ namespace System.Web.Http.Dispatcher
HttpRequestMessage request = new HttpRequestMessage();
IHttpRouteData routeData = GetRouteData();
routeData.Values["controller"] = "Sample";
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
request.SetRouteData(routeData);
DefaultHttpControllerSelector selector = new DefaultHttpControllerSelector(configuration);
@ -169,12 +169,12 @@ namespace System.Web.Http.Dispatcher
HttpRequestMessage request1 = new HttpRequestMessage();
IHttpRouteData routeData1 = GetRouteData();
routeData1.Values["controller"] = "Sample";
request1.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData1;
request1.SetRouteData(routeData1);
HttpRequestMessage request2 = new HttpRequestMessage();
IHttpRouteData routeData2 = GetRouteData();
routeData2.Values["controller"] = "SaMPle";
request2.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData2;
request2.SetRouteData(routeData2);
DefaultHttpControllerSelector selector = new DefaultHttpControllerSelector(configuration);
@ -201,7 +201,7 @@ namespace System.Web.Http.Dispatcher
{
HttpConfiguration configuration = new HttpConfiguration();
HttpRequestMessage request = new HttpRequestMessage();
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = GetRouteData();
request.SetRouteData(GetRouteData());
DefaultHttpControllerSelector selector = new DefaultHttpControllerSelector(configuration);
@ -223,7 +223,7 @@ namespace System.Web.Http.Dispatcher
var action2Descriptor = new ReflectedHttpActionDescriptor() { ControllerDescriptor = controllerDescriptor };
IHttpRouteData routeData = GetRouteData();
routeData.Route.DataTokens.Add("actions", new ReflectedHttpActionDescriptor[] { action1Descriptor, action2Descriptor });
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
request.SetRouteData(routeData);
DefaultHttpControllerSelector selector = new DefaultHttpControllerSelector(configuration);
@ -243,7 +243,7 @@ namespace System.Web.Http.Dispatcher
var action2Descriptor = new ReflectedHttpActionDescriptor() { ControllerDescriptor = new HttpControllerDescriptor() };
IHttpRouteData routeData = GetRouteData();
routeData.Route.DataTokens.Add("actions", new ReflectedHttpActionDescriptor[] { action1Descriptor, action2Descriptor });
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
request.SetRouteData(routeData);
DefaultHttpControllerSelector selector = new DefaultHttpControllerSelector(configuration);
@ -287,8 +287,8 @@ namespace System.Web.Http.Dispatcher
HttpRequestMessage request = new HttpRequestMessage();
IHttpRouteData routeData1 = GetRouteData();
routeData1.Values["controller"] = "Sample";
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData1;
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = configuration;
request.SetRouteData(routeData1);
request.SetConfiguration(configuration);
DefaultHttpControllerSelector selector = new DefaultHttpControllerSelector(configuration);
@ -317,8 +317,8 @@ namespace System.Web.Http.Dispatcher
HttpRequestMessage request = new HttpRequestMessage();
IHttpRouteData routeData1 = GetRouteData();
routeData1.Values["controller"] = "Sample";
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData1;
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = configuration;
request.SetRouteData(routeData1);
request.SetConfiguration(configuration);
DefaultHttpControllerSelector selector = new DefaultHttpControllerSelector(configuration);

Просмотреть файл

@ -123,8 +123,8 @@ namespace System.Web.Http.Dispatcher
{
IHttpRoute route = config.Routes.MapHttpRoute("default", "api/{controller}/{id}", new { id = RouteParameter.Optional });
var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = route.GetRouteData("/", request);
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetRouteData(route.GetRouteData("/", request));
request.SetConfiguration(config);
return request;
}

Просмотреть файл

@ -71,7 +71,7 @@ namespace System.Web.Http.Dispatcher
responseTask.WaitUntilCompleted();
Assert.Equal(HttpStatusCode.NotFound, responseTask.Result.StatusCode);
Assert.True((bool)request.Properties["MS_NoRouteMatched"]);
Assert.True((bool)request.Properties[HttpPropertyKeys.NoRouteMatched]);
}
[Fact]
@ -117,7 +117,7 @@ namespace System.Web.Http.Dispatcher
config.Routes.Add("default", route);
var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
return request;
}

Просмотреть файл

@ -27,7 +27,7 @@ namespace System.Net.Http
public HttpRequestMessageExtensionsTest()
{
_disposable = _disposableMock.Object;
_request.Properties[HttpPropertyKeys.HttpConfigurationKey] = _config;
_request.SetConfiguration(_config);
}
[Fact]
@ -330,7 +330,7 @@ namespace System.Net.Http
public void CreateResponse_MatchingMediaType_WhenMediaTypeDoesNotMatch_Throws()
{
// Arrange
_request.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration();
_request.SetConfiguration(new HttpConfiguration());
// Act
Assert.Throws<InvalidOperationException>(() => _request.CreateResponse(HttpStatusCode.OK, _value, mediaType: "foo/bar"),
@ -342,7 +342,7 @@ namespace System.Net.Http
{
// Arrange
var config = new HttpConfiguration();
_request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
_request.SetConfiguration(config);
config.Formatters.Clear();
Mock<MediaTypeFormatter> formatterMock = new Mock<MediaTypeFormatter> { CallBase = true };
var formatter = formatterMock.Object;
@ -520,7 +520,7 @@ namespace System.Net.Http
public void GetUrlHelper_ReturnsUrlHelper()
{
HttpRequestMessage request = new HttpRequestMessage();
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration();
request.SetConfiguration(new HttpConfiguration());
UrlHelper urlHelper = request.GetUrlHelper();
@ -532,7 +532,7 @@ namespace System.Net.Http
public void GetUrlHelper_Caches_UrlHelperInstance()
{
HttpRequestMessage request = new HttpRequestMessage();
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration();
request.SetConfiguration(new HttpConfiguration());
UrlHelper urlHelper1 = request.GetUrlHelper();
UrlHelper urlHelper2 = request.GetUrlHelper();

Просмотреть файл

@ -131,7 +131,7 @@ namespace System.Net.Http.Formatting
routeData.Values[UriPathExtensionMapping.UriPathExtensionKey] = extensionValue;
HttpRequestMessage request = new HttpRequestMessage();
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
request.SetRouteData(routeData);
return request;
}

Просмотреть файл

@ -136,8 +136,8 @@ namespace System.Web.Http.Routing
// Set up routes
var routes = new HttpRouteCollection("/somerootpath");
IHttpRoute route = routes.MapHttpRoute("route1", "{controller}/{id}");
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration(routes);
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = new HttpRouteData(route, new HttpRouteValueDictionary(new { controller = "people", id = "123" }));
request.SetConfiguration(new HttpConfiguration(routes));
request.SetRouteData(new HttpRouteData(route, new HttpRouteValueDictionary(new { controller = "people", id = "123" })));
return new UrlHelper(request);
}

Просмотреть файл

@ -16,8 +16,8 @@ namespace System.Web.Http
HttpConfiguration config = configuration ?? new HttpConfiguration();
IHttpRouteData route = routeData ?? new HttpRouteData(new HttpRoute());
HttpRequestMessage req = request ?? new HttpRequestMessage();
req.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
req.Properties[HttpPropertyKeys.HttpRouteDataKey] = route;
req.SetConfiguration(config);
req.SetRouteData(route);
HttpControllerContext context = new HttpControllerContext(config, route, req);
if (instance != null)

Просмотреть файл

@ -341,7 +341,7 @@ namespace System.Web.Http.WebHost
Mock<HttpContextBase> contextMock = CreateMockHttpContextBaseForResponse(memoryStream);
HttpResponseBase responseBase = contextMock.Object.Response;
HttpRequestMessage request = new HttpRequestMessage();
request.Properties.Add(HttpPropertyKeys.IsLocalKey, new Lazy<bool>(() => true));
request.SetIsLocal(new Lazy<bool>(() => true));
HttpResponseMessage response = new HttpResponseMessage() { RequestMessage = request };
response.Content = new ObjectContent<string>("hello", formatterMock.Object);
@ -388,7 +388,7 @@ namespace System.Web.Http.WebHost
Mock<HttpContextBase> contextMock = CreateMockHttpContextBaseForResponse(memoryStream);
HttpResponseBase responseBase = contextMock.Object.Response;
HttpRequestMessage request = new HttpRequestMessage();
request.Properties.Add(HttpPropertyKeys.IsLocalKey, new Lazy<bool>(() => true));
request.SetIsLocal(new Lazy<bool>(() => true));
HttpResponseMessage response = new HttpResponseMessage() { RequestMessage = request };
response.Content = new ObjectContent<string>("hello", formatterMock.Object);
@ -438,7 +438,7 @@ namespace System.Web.Http.WebHost
Mock<HttpContextBase> contextMock = CreateMockHttpContextBaseForResponse(memoryStream);
HttpResponseBase responseBase = contextMock.Object.Response;
HttpRequestMessage request = new HttpRequestMessage();
request.Properties.Add(HttpPropertyKeys.IsLocalKey, new Lazy<bool>(() => true));
request.SetIsLocal(new Lazy<bool>(() => true));
HttpResponseMessage response = new HttpResponseMessage() { RequestMessage = request };
response.Content = new ObjectContent<string>("hello", formatterMock.Object);
@ -473,7 +473,7 @@ namespace System.Web.Http.WebHost
Mock<HttpContextBase> contextMock = CreateMockHttpContextBaseForResponse(memoryStream);
HttpResponseBase responseBase = contextMock.Object.Response;
HttpRequestMessage request = new HttpRequestMessage();
request.Properties.Add(HttpPropertyKeys.IsLocalKey, new Lazy<bool>(() => true));
request.SetIsLocal(new Lazy<bool>(() => true));
HttpResponseMessage response = new HttpResponseMessage() { RequestMessage = request };
response.Content = new ObjectContent<string>("hello", formatterMock.Object);
@ -522,8 +522,8 @@ namespace System.Web.Http.WebHost
Mock<HttpContextBase> contextMock = CreateMockHttpContextBaseForResponse(memoryStream);
HttpResponseBase responseBase = contextMock.Object.Response;
HttpRequestMessage request = new HttpRequestMessage();
request.Properties.Add(HttpPropertyKeys.IsLocalKey, new Lazy<bool>(() => true));
request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, config);
request.SetIsLocal(new Lazy<bool>(() => true));
request.SetConfiguration(config);
HttpResponseMessage response = new HttpResponseMessage() { RequestMessage = request };
response.Content = new ObjectContent<string>("hello", formatterMock.Object);
@ -560,8 +560,8 @@ namespace System.Web.Http.WebHost
Mock<HttpContextBase> contextMock = CreateMockHttpContextBaseForResponse(memoryStream);
HttpResponseBase responseBase = contextMock.Object.Response;
HttpRequestMessage request = new HttpRequestMessage();
request.Properties.Add(HttpPropertyKeys.IsLocalKey, new Lazy<bool>(() => true));
request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, config);
request.SetIsLocal(new Lazy<bool>(() => true));
request.SetConfiguration(config);
HttpResponseMessage response = new HttpResponseMessage() { RequestMessage = request };
response.Content = new ObjectContent<string>("hello", formatterMock.Object);
@ -610,8 +610,8 @@ namespace System.Web.Http.WebHost
Mock<HttpContextBase> contextMock = CreateMockHttpContextBaseForResponse(memoryStream);
HttpResponseBase responseBase = contextMock.Object.Response;
HttpRequestMessage request = new HttpRequestMessage();
request.Properties.Add(HttpPropertyKeys.IsLocalKey, new Lazy<bool>(() => true));
request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, config);
request.SetIsLocal(new Lazy<bool>(() => true));
request.SetConfiguration(config);
HttpResponseMessage response = new HttpResponseMessage() { RequestMessage = request };
response.Content = new ObjectContent<string>("hello", formatterMock.Object);
@ -649,8 +649,8 @@ namespace System.Web.Http.WebHost
Mock<HttpContextBase> contextMock = CreateMockHttpContextBaseForResponse(memoryStream);
HttpResponseBase responseBase = contextMock.Object.Response;
HttpRequestMessage request = new HttpRequestMessage();
request.Properties.Add(HttpPropertyKeys.IsLocalKey, new Lazy<bool>(() => true));
request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, config);
request.SetIsLocal(new Lazy<bool>(() => true));
request.SetConfiguration(config);
HttpResponseMessage response = new HttpResponseMessage() { RequestMessage = request };
response.Content = new ObjectContent<string>("hello", formatterMock.Object);
@ -705,7 +705,7 @@ namespace System.Web.Http.WebHost
HttpContextBase contextBase = CreateStubContext(requestBase, responseBase);
HttpRequestMessage request = new HttpRequestMessage();
request.Properties.Add(HttpPropertyKeys.IsLocalKey, new Lazy<bool>(() => true));
request.SetIsLocal(new Lazy<bool>(() => true));
HttpResponseMessage response = new HttpResponseMessage() { RequestMessage = request };
response.Content = new ObjectContent<string>("hello", formatterMock.Object);
@ -740,7 +740,7 @@ namespace System.Web.Http.WebHost
HttpContextBase contextBase = CreateStubContext(requestBase, responseBase);
HttpRequestMessage request = new HttpRequestMessage();
request.Properties.Add(HttpPropertyKeys.IsLocalKey, new Lazy<bool>(() => true));
request.SetIsLocal(new Lazy<bool>(() => true));
HttpResponseMessage response = new HttpResponseMessage() { RequestMessage = request };
response.Content = new ObjectContent<string>("hello", formatterMock.Object);

Просмотреть файл

@ -7,14 +7,14 @@ namespace System.Web.Http
{
internal static class HttpRequestMessageExtensions
{
public static void SetConfiguration(this HttpRequestMessage request, HttpConfiguration configuration)
public static void SetIsLocal(this HttpRequestMessage request, Lazy<bool> isLocal)
{
if (request == null)
{
throw new ArgumentNullException("request");
}
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = configuration;
request.Properties[HttpPropertyKeys.IsLocalKey] = isLocal;
}
}
}

Просмотреть файл

@ -165,9 +165,9 @@ namespace System.Web.Http.WebHost.Routing
var mockHandler = new Mock<HttpMessageHandler>();
var config = new HttpConfiguration();
var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/api/controllerName");
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetConfiguration(config);
HttpDomainRoute domainRoute = new HttpDomainRoute("test", new { controller = "Values", action = "GetTenant" });
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = new HostedHttpRouteData(domainRoute.GetRouteData(null));
request.SetRouteData(new HostedHttpRouteData(domainRoute.GetRouteData(null)));
var dispatcher = new HttpRoutingDispatcher(config, defaultHandler: mockHandler.Object);
var invoker = new HttpMessageInvoker(dispatcher);
@ -192,8 +192,8 @@ namespace System.Web.Http.WebHost.Routing
var config = new HttpConfiguration(_webApiRoutes);
IHttpRoute route = _webApiRoutes.CreateRoute("api", null, null);
_webApiRoutes.Add("default", route);
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = _webApiRoutes.GetRouteData(request);
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.SetRouteData(_webApiRoutes.GetRouteData(request));
request.SetConfiguration(config);
IHttpVirtualPathData result = _webApiRoutes.GetVirtualPath(request, null, new HttpRouteValueDictionary { { "httproute", true } });
@ -274,7 +274,7 @@ namespace System.Web.Http.WebHost.Routing
{"httproute", true}
};
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = new HttpRouteData(route, routeValues);
request.SetRouteData(new HttpRouteData(route, routeValues));
// Act
IHttpVirtualPathData httpvPathData = collection.GetVirtualPath(request, "domainRoute", routeValues);

Просмотреть файл

@ -144,7 +144,7 @@ namespace System.Web.Http.WebHost.Routing
Route apiRoute1 = routes.MapHttpRoute("apiroute1", "api/{controller}/{id}", new { action = "someaction" });
Route apiRoute2 = routes.MapHttpRoute("apiroute2", "api/{controller}/{action}", new { id = 789 });
Route webRoute1 = routes.MapRoute("webroute1", "{controller}/{action}/{id}");
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration(hostedRoutes);
request.SetConfiguration(new HttpConfiguration(hostedRoutes));
RouteData routeData = new RouteData();
routeData.Values.Add("controller", "people");
@ -166,7 +166,7 @@ namespace System.Web.Http.WebHost.Routing
default:
throw new ArgumentException("Invalid route specified.", "whichRoute");
}
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = new HostedHttpRouteData(routeData);
request.SetRouteData(new HostedHttpRouteData(routeData));
requestContext = new RequestContext(mockHttpContext.Object, routeData);

Просмотреть файл

@ -258,7 +258,7 @@ namespace System.Web.Http.WebHost.Routing
{
// Arrange
HttpRequestMessage request = new HttpRequestMessage();
request.Properties.Add(HttpPropertyKeys.IsLocalKey, new Lazy<bool>(() => true));
request.SetIsLocal(new Lazy<bool>(() => true));
HttpRequestMessageWrapper wrapper = new HttpRequestMessageWrapper("/", request);
// Act

Просмотреть файл

@ -39,6 +39,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="GlobalConfigurationTest.cs" />
<Compile Include="HttpRequestMessageExtensions.cs" />
<Compile Include="Routing\HttpContextBaseExtensionsTest.cs" />
<Compile Include="Routing\HttpRequestMessageWrapperTest.cs" />
<Compile Include="Routing\HostedHttpRouteCollectionTest.cs" />