ASP.NET MVC получает текущий хост

Как получить хост без использования Request? Этот код может быть помещен в контроллер:

return String.Equals(this.Request.Url.Host, absoluteUri.Host, StringComparison.OrdinalIgnoreCase);

но я выхожу из контроллера и должен найти другой способ заменить этот this.Request.Url.Host.

Вся моя цель - иметь доступ к этому методу в классе-помощнике:

Url.IsLocalUrl(returnUrl);

Мой вспомогательный метод будет выглядеть так:

public static string GetLocalUrl(string url)
{
     if(Url.IsLocalUrl()){
         return url;
     }
     else{
         return Action("Security", "Home");
     }
}

Ответы

Ответ 1

Используйте либо HttpContext.Current.Request, либо вставляйте экземпляр HttpContextBase во все, что ему требуется. Я бы рекомендовал вариант 2, потому что вы можете легко проверить этот другой компонент. Так как HttpContextBase можно издеваться/замаскировать.

Ответ 2

Вы можете использовать это вне контроллера:

System.Web.HttpContext.Current.Request.Url

Ответ 3

В html-помощнике вы можете использовать

    htmlHelper.ViewContext.HttpContext.Request.Url