从ASP.NET Core 3.1中的当前URL获取主机信息
程序员文章站
2024-02-20 08:13:40
...
目录
介绍
在处理Web应用程序时,很自然,我们需要在产品生命周期的各个阶段在各种环境(即开发,测试,生产等)之间切换。换句话说,所有这些环境可能具有不同的主机地址。让我们来看看其中的一些。
在开发阶段,我们通常使用http://localhost:8080/features/ ... 运行我们的应用程序,其中我们的主机是localhost:8080。
在测试阶段,可以在http://www.consumerapps.com/features/ ... 上运行同一应用程序,而我们的主机是www.consumerapps.com。
问题陈述
如果我们想在日志文件中获取主机名以进行审核该怎么办。我们无法在应用程序中对其进行硬编码,因为它可能会根据应用程序运行的环境而变化。如何做到这一点?
解决方案
在ASP.NET Core 3.1中,可以使用HttpContext轻松实现。我们要做的第一个更改是注册IHttpContextAccessor为单例:
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
接下来,我们必须通过构造函数注入使其对控制器可用:
public class HomeController : Controller
{
private readonly ILogger<homecontroller> _logger;
private readonly IHttpContextAccessor _httpContextAccessor;
public HomeController(ILogger<homecontroller> logger,
IHttpContextAccessor httpContextAccessor)
{
_logger = logger;
_httpContextAccessor = httpContextAccessor;
}
}
完成上述设置后,即可使用以下代码行在任何操作中访问主机名:
string host = _httpContextAccessor.HttpContext.Request.Host.Value;
希望您喜欢这个技巧。
上一篇: 一个好用的功能强大的php分页类
下一篇: 分页 的实现