从ASP.NET Core 3.1中的当前URL获取主机信息

目录

介绍

问题陈述

解决方案


介绍

在处理Web应用程序时,很自然,我们需要在产品生命周期的各个阶段在各种环境(即开发,测试,生产等)之间切换。换句话说,所有这些环境可能具有不同的主机地址。让我们来看看其中的一些。

在开发阶段,我们通常使用http://localhost:8080/features/ ... 运行我们的应用程序,其中我们的主机是localhost:8080

在测试阶段,可以在http://www.consumerapps.com/features/ ... 上运行同一应用程序,而我们的主机是www.consumerapps.com

问题陈述

如果我们想在日志文件中获取主机名以进行审核该怎么办。我们无法在应用程序中对其进行硬编码,因为它可能会根据应用程序运行的环境而变化。如何做到这一点?

解决方案

ASP.NET Core 3.1中,可以使用HttpContext轻松实现。我们要做的第一个更改是注册IHttpContextAccessor为单例:

services.AddSingleton();

接下来,我们必须通过构造函数注入使其对控制器可用:

public class HomeController : Controller
{
		private readonly ILogger _logger;
		private readonly IHttpContextAccessor _httpContextAccessor;

		public HomeController(ILogger logger, 
                              IHttpContextAccessor httpContextAccessor)
		{
			_logger = logger;
			_httpContextAccessor = httpContextAccessor;
		}
}

完成上述设置后,即可使用以下代码行在任何操作中访问主机名:

string host = _httpContextAccessor.HttpContext.Request.Host.Value;

希望您喜欢这个技巧。

你可能感兴趣的:(ASP.NET,CORE)