【发布时间】:2020-08-31 05:12:40
【问题描述】:
我有一个在 IIS 10 上使用 .net core 3.1 的 Web 应用程序。我设置了我的主域,并且我有 3 个解析为主域名的别名域。对于我的应用,我想知道用户使用哪个域访问该站点。
我怎么能确定呢?任何能让我指出正确方向的帮助都会很棒。
谢谢!
【问题讨论】:
标签: c# asp.net-core razor-pages domain-aliasing
我有一个在 IIS 10 上使用 .net core 3.1 的 Web 应用程序。我设置了我的主域,并且我有 3 个解析为主域名的别名域。对于我的应用,我想知道用户使用哪个域访问该站点。
我怎么能确定呢?任何能让我指出正确方向的帮助都会很棒。
谢谢!
【问题讨论】:
标签: c# asp.net-core razor-pages domain-aliasing
如果我理解正确,别名域只是一个附加域,它指向与您的主域相同的服务器,所以您没有被重定向到主域?即地址栏仍然显示用户用于访问您的网站的 URL。在这种情况下,它应该像从当前 URL 中读取主机名一样简单。您可以通过IHttpContextAccessor 获取该信息。
第一步,在startup.cs文件中注册为服务
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
第 2 步,通过 DI 使您的控制器依赖它:
private readonly IHttpContextAccessor _httpContextAccessor;
public YourController(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
第 3 步,从 httpContextAccessor 读取信息:
string domain = _httpContextAccessor.HttpContext.Request.Host.Value;
【讨论】:
IHttpContextAccessor 注入控制器(在大多数情况下从Microsoft 的控制器派生)没有多大意义,因为HttpContext 已经可以通过具有相同名称的属性访问而无需特殊的访问器。你写这个很可能是为了举例,但也许考虑将YourController 更改为某种经理、助手或任何一般服务,请记住 OP 没有说明他打算在哪里使用这种逻辑。