在ASP.NET Core MVC中获取主机地址



我想在类型为POST的控制器上获取主机地址。请检查下面的控制器示例。请注意,我使用的是asp.net核心2.1

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult PasswordReset(ResetPassword data)
{
string myurl = //how can i store http host address on this variable?
return View()
}

试试这个:

在控制器中:

string myHostUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";

控制器外:

public class YourClass 
{
private readonly IHttpContextAccessor _httpContextAccessor;
public YourClass(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public void YourMethod()
{
string myHostUrl = $"{_httpContextAccessor.HttpContext.Request.Scheme}://{_httpContextAccessor.HttpContext.Request.Host}";
}
}

然后在Startup类中注册IHttpContextAccessor,如下所示:

public void ConfigureServices(IServiceCollection services)
{
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
// Or you can also register as follows
services.AddHttpContextAccessor();
}

您可以通过访问请求获得

string myurl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}";

//获取完整的主机

string host = Request.Scheme + "://" + Request.Host.Value;
In case, if your application is hosted inside a virtual directory, 
public class ABC
{
private readonly IHttpContextAccessor _httpContextAccessor;
public ABC(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public void GetFullAppHostUrl()
{
string fullUrl=  $"{_httpContextAccessor.HttpContext.Request.Scheme}://{_httpContextAccessor.HttpContext.Request.Host}{_httpContextAccessor.HttpContext.Request.PathBase}";
}
}

最新更新