欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从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;

希望您喜欢这个技巧。

相关标签: ASP.NET CORE