public static string AbsoluteRouteUrl(this UrlHelper url, string routeName, object routeValues, string protocol = null)
{
Uri requestUrl = url.RequestContext.HttpContext.Request.Url;
var builder = new UriBuilder(new Uri(requestUrl, url.HttpRouteUrl(routeName, routeValues)));
builder.Scheme = protocol ?? requestUrl.Scheme;
builder.Host = requestUrl.Host;
builder.Port = requestUrl.Port;
return builder.Uri.AbsoluteUri;
}
}