如何获取 .Net Core 中间件中的当前子域?

How do I get the current subdomain within .Net Core middleware?

如何在 asp.net 中获取当前请求(在中间件组件中)的当前子域 5.

我以前使用过下面的代码并寻找类似的东西。

public static string GetSubDomain()
        {
            string subDomain = String.Empty;

            if (HttpContext.Current.Request.Url.HostNameType == UriHostNameType.Dns)
            {
                subDomain = Regex.Replace(HttpContext.Current.Request.Url.Host, "((.*)(\..*){2})|(.*)", "").Trim().ToLower();
            }

            if (subDomain == String.Empty)
            {

                subDomain = HttpContext.Current.Request.Headers["Host"].Split('.')[0];
            }

            return subDomain.Trim().ToLower();
        }

在此期间,我设法找到了自己的答案...感谢评论。

private static string GetSubDomain(HttpContext httpContext)
        {
            var subDomain = string.Empty;

            var host = httpContext.Request.Host.Host;

            if (!string.IsNullOrWhiteSpace(host))
            {
                subDomain = host.Split('.')[0];
            }

            return subDomain.Trim().ToLower();
        }

如果您使用 Cross-Domain,最好的选择是使用来自 Request-Header 的 Origin。 类似于:

Request.Headers.TryGetValue("Origin",  out var origin);

然后使用 split 或任何您喜欢的方式操作该值。