Когда я пытался использовать UrlHelper (строковое действие, строковый контроллер), я все еще получал относительный путь.
Поэтому для генерации полного URL я использовал Uri и передал Uri запроса в качестве baseUri.
есть:
var urlHelper = new UrlHelper(Request.RequestContext);
var routeUri = new Uri(Request.Url, urlHelper.Action("action", "controller"));
return routeUri.AbsoluteUri;