ASP.NET MVC获得当前主机

Sha*_*ean 15 asp.net-mvc asp.net-mvc-3

如何在不使用主机的情况下获取主机Request?此代码可以放在控制器中:

return String.Equals(this.Request.Url.Host, absoluteUri.Host, StringComparison.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

但我正在将它从控制器中移出,需要找到另一种方法来取代它this.Request.Url.Host.

我的目的是在helper类中访问此方法:

Url.IsLocalUrl(returnUrl);
Run Code Online (Sandbox Code Playgroud)

我的帮助方法如下所示:

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

san*_*oIT 19

您可以在控制器外使用它:

System.Web.HttpContext.Current.Request.Url
Run Code Online (Sandbox Code Playgroud)


Vad*_*dim 10

使用 HttpContext.Current.Request或注入HttpContextBase任何需要此信息的实例.我建议选项2,因为您可以轻松测试其他组件.由于HttpContextBase可以被模拟/存根.