Asp.net

如何在 .Net Core 中間件中獲取目前子域?

  • October 7, 2020

如何在 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})|(.*)", "$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();
       }

如果您使用的是跨域,最好的選擇是使用 Request-Header 中的 Origin。就像是:

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

然後使用 split 或任何您喜歡的方式操作該值。

引用自:https://stackoverflow.com/questions/38549143