From 9e7d2884b9abe7bc18da22330abb2e782a0e50eb Mon Sep 17 00:00:00 2001 From: filipw Date: Tue, 21 Oct 2014 08:39:21 +0200 Subject: [PATCH] do not recreate HttpControllerDescriptor every time --- .../WebApi/NamespaceHttpControllerSelector.cs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web/WebApi/NamespaceHttpControllerSelector.cs b/src/Umbraco.Web/WebApi/NamespaceHttpControllerSelector.cs index 975561afff..1447085dc2 100644 --- a/src/Umbraco.Web/WebApi/NamespaceHttpControllerSelector.cs +++ b/src/Umbraco.Web/WebApi/NamespaceHttpControllerSelector.cs @@ -14,12 +14,12 @@ namespace Umbraco.Web.WebApi { private const string ControllerKey = "controller"; private readonly HttpConfiguration _configuration; - private readonly Lazy> _duplicateControllerTypes; + private readonly Lazy> _duplicateControllerTypes; public NamespaceHttpControllerSelector(HttpConfiguration configuration) : base(configuration) { _configuration = configuration; - _duplicateControllerTypes = new Lazy>(GetDuplicateControllerTypes); + _duplicateControllerTypes = new Lazy>(GetDuplicateControllerTypes); } public override HttpControllerDescriptor SelectController(HttpRequestMessage request) @@ -52,14 +52,11 @@ namespace Umbraco.Web.WebApi return base.SelectController(request); //see if this is in our cache - var found = _duplicateControllerTypes.Value - .Where(x => string.Equals(x.Name, controllerNameAsString + ControllerSuffix, StringComparison.OrdinalIgnoreCase)) - .FirstOrDefault(x => namespaces.Contains(x.Namespace)); - + var found = _duplicateControllerTypes.Value.FirstOrDefault(x => string.Equals(x.ControllerName, controllerNameAsString, StringComparison.OrdinalIgnoreCase) && namespaces.Contains(x.ControllerNamespace)); if (found == null) return base.SelectController(request); - return new HttpControllerDescriptor(_configuration, controllerNameAsString, found); + return found.Descriptor; } private ConcurrentStack GetDuplicateControllerTypes()