diff --git a/src/Umbraco.Web/HttpUrlHelperExtensions.cs b/src/Umbraco.Web/HttpUrlHelperExtensions.cs
index 1b04a7dd8f..d3e87a6bf7 100644
--- a/src/Umbraco.Web/HttpUrlHelperExtensions.cs
+++ b/src/Umbraco.Web/HttpUrlHelperExtensions.cs
@@ -122,5 +122,29 @@ namespace Umbraco.Web
}
}
}
+
+ ///
+ /// Return the Base Url (not including the action) for a Web Api service
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static string GetUmbracoApiServiceBaseUrl(this UrlHelper url, string actionName)
+ where T : UmbracoApiController
+ {
+ return url.GetUmbracoApiService(actionName).TrimEnd(actionName);
+ }
+
+ public static string GetUmbracoApiServiceBaseUrl(this UrlHelper url, Expression> methodSelector)
+ where T : UmbracoApiController
+ {
+ var method = Core.ExpressionHelper.GetMethodInfo(methodSelector);
+ if (method == null)
+ {
+ throw new MissingMethodException("Could not find the method " + methodSelector + " on type " + typeof(T) + " or the result ");
+ }
+ return url.GetUmbracoApiService(method.Name).TrimEnd(method.Name);
+ }
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs b/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs
index e179159e7c..27f34a12e6 100644
--- a/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs
@@ -115,7 +115,7 @@ namespace Umbraco.Web.Models.Mapping
//map the tree node url
if (HttpContext.Current != null)
{
- var urlHelper = new UrlHelper(new RequestContext(new HttpContextWrapper(HttpContext.Current), new RouteData()));
+ var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
var url = urlHelper.GetUmbracoApiService(controller => controller.GetTreeNode(display.Id.ToString(), null));
display.TreeNodeUrl = url;
}
diff --git a/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs
index c3f9412401..4bcdf7a158 100644
--- a/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs
@@ -96,7 +96,7 @@ namespace Umbraco.Web.Models.Mapping
//map the tree node url
if (HttpContext.Current != null)
{
- var urlHelper = new UrlHelper(new RequestContext(new HttpContextWrapper(HttpContext.Current), new RouteData()));
+ var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
var url = urlHelper.GetUmbracoApiService(controller => controller.GetTreeNode(display.Id.ToString(), null));
display.TreeNodeUrl = url;
}
diff --git a/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs
index edb44d36ce..0536efd307 100644
--- a/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs
@@ -148,7 +148,7 @@ namespace Umbraco.Web.Models.Mapping
//map the tree node url
if (HttpContext.Current != null)
{
- var urlHelper = new UrlHelper(new RequestContext(new HttpContextWrapper(HttpContext.Current), new RouteData()));
+ var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
var url = urlHelper.GetUmbracoApiService(controller => controller.GetTreeNode(display.Key.ToString("N"), null));
display.TreeNodeUrl = url;
}
diff --git a/src/Umbraco.Web/UI/Controls/UmbracoControl.cs b/src/Umbraco.Web/UI/Controls/UmbracoControl.cs
index bc633b22a3..b84deaa232 100644
--- a/src/Umbraco.Web/UI/Controls/UmbracoControl.cs
+++ b/src/Umbraco.Web/UI/Controls/UmbracoControl.cs
@@ -81,7 +81,7 @@ namespace Umbraco.Web.UI.Controls
///
public UrlHelper Url
{
- get { return _url ?? (_url = new UrlHelper(new RequestContext(new HttpContextWrapper(Context), new RouteData()))); }
+ get { return _url ?? (_url = new UrlHelper(Context.Request.RequestContext)); }
}
///
diff --git a/src/Umbraco.Web/UI/Controls/UmbracoUserControl.cs b/src/Umbraco.Web/UI/Controls/UmbracoUserControl.cs
index 2a18413ace..246b9d45c2 100644
--- a/src/Umbraco.Web/UI/Controls/UmbracoUserControl.cs
+++ b/src/Umbraco.Web/UI/Controls/UmbracoUserControl.cs
@@ -119,7 +119,7 @@ namespace Umbraco.Web.UI.Controls
///
public UrlHelper Url
{
- get { return _url ?? (_url = new UrlHelper(new RequestContext(new HttpContextWrapper(Context), new RouteData()))); }
+ get { return _url ?? (_url = new UrlHelper(Context.Request.RequestContext)); }
}
///
diff --git a/src/Umbraco.Web/UI/Pages/BasePage.cs b/src/Umbraco.Web/UI/Pages/BasePage.cs
index b9eec4982b..e2c64b7ece 100644
--- a/src/Umbraco.Web/UI/Pages/BasePage.cs
+++ b/src/Umbraco.Web/UI/Pages/BasePage.cs
@@ -69,7 +69,7 @@ namespace Umbraco.Web.UI.Pages
///
public UrlHelper Url
{
- get { return _url ?? (_url = new UrlHelper(new RequestContext(new HttpContextWrapper(Context), new RouteData()))); }
+ get { return _url ?? (_url = new UrlHelper(Context.Request.RequestContext)); }
}
private HtmlHelper _html;
diff --git a/src/Umbraco.Web/WebServices/UmbracoHttpHandler.cs b/src/Umbraco.Web/WebServices/UmbracoHttpHandler.cs
index d50f28b350..d315f0d20d 100644
--- a/src/Umbraco.Web/WebServices/UmbracoHttpHandler.cs
+++ b/src/Umbraco.Web/WebServices/UmbracoHttpHandler.cs
@@ -71,7 +71,7 @@ namespace Umbraco.Web.WebServices
///
public UrlHelper Url
{
- get { return _url ?? (_url = new UrlHelper(new RequestContext(new HttpContextWrapper(HttpContext.Current), new RouteData()))); }
+ get { return _url ?? (_url = new UrlHelper(HttpContext.Current.Request.RequestContext)); }
}
///
diff --git a/src/Umbraco.Web/WebServices/UmbracoWebService.cs b/src/Umbraco.Web/WebServices/UmbracoWebService.cs
index e92e85de1e..55b2d54295 100644
--- a/src/Umbraco.Web/WebServices/UmbracoWebService.cs
+++ b/src/Umbraco.Web/WebServices/UmbracoWebService.cs
@@ -72,7 +72,7 @@ namespace Umbraco.Web.WebServices
///
public UrlHelper Url
{
- get { return _url ?? (_url = new UrlHelper(new RequestContext(new HttpContextWrapper(Context), new RouteData()))); }
+ get { return _url ?? (_url = new UrlHelper(Context.Request.RequestContext)); }
}
///
diff --git a/src/umbraco.businesslogic/BasePages/BasePage.cs b/src/umbraco.businesslogic/BasePages/BasePage.cs
index 6af70e21a9..b1f58d0745 100644
--- a/src/umbraco.businesslogic/BasePages/BasePage.cs
+++ b/src/umbraco.businesslogic/BasePages/BasePage.cs
@@ -113,7 +113,7 @@ namespace umbraco.BasePages
///
public UrlHelper Url
{
- get { return _url ?? (_url = new UrlHelper(new RequestContext(new HttpContextWrapper(Context), new RouteData()))); }
+ get { return _url ?? (_url = new UrlHelper(Context.Request.RequestContext)); }
}
///