如何在 Web API 操作上获取子域
How to get Sub Domain on Web API Action
我正在开发 Classified Web Site
。该网站有很多子域,如 dubai.sitedomain.com
、london.sitedomain.com
、newyork.sitedomain.com
等,具体取决于城市。我使用 Angularjs
作为前端,Web Api
作为服务器端。
我的要求是我想在我的 Web Api Action
上获得 subdomain
。喜欢:
[HttpGet]
[Route("GetAds")]
public IHttpActionResult GetAds()
{
// Here I want to know, from which subdomain the request has been sent
// so I can filter my ads according to the city
var city = "city from subdomain";
var list = _adService.GetAdsByCity(city);
return Ok(list);
}
您可以从
中提取它
var x = Request.Host.Value;
哪个会给你"london.sitedomain.com:port"
然后你可以做一个
x.Split('.')[0] //(for example)
获取子域
使用Request.Headers.Referrer.Host.Replace(".sitedomain.com", string.Empty);
当然这只适用于您的实时环境,因此您可能需要修改它以在您的本地测试域上以不同方式工作,或提供某种默认回退。我建议将其提取到公共库中的方法中,因为您可能会在很多地方需要它。
或者,如果您知道它永远是第一部分,您可以使用
Request.Headers.Referrer.Host.Substring(0, Request.Headers.Referrer.Host.IndexOf("."));
这应该可以满足您的需求。
HttpContext.Current.Request.UserHostAddress;
HttpContext.Current.Request.UserAgent;
HttpContext.Current.Request.Url.OriginalString;
还有:
Request.Url.Scheme
Request.Url.Authority
Request.ApplicationPath
您可以从 HttpRequestMessage.RequestUri.Host
:
获取主机
string host = Request.RequestUri.Host;
int index = host.IndexOf('.');
return host.Substring(0, index + 1)
我正在开发 Classified Web Site
。该网站有很多子域,如 dubai.sitedomain.com
、london.sitedomain.com
、newyork.sitedomain.com
等,具体取决于城市。我使用 Angularjs
作为前端,Web Api
作为服务器端。
我的要求是我想在我的 Web Api Action
上获得 subdomain
。喜欢:
[HttpGet]
[Route("GetAds")]
public IHttpActionResult GetAds()
{
// Here I want to know, from which subdomain the request has been sent
// so I can filter my ads according to the city
var city = "city from subdomain";
var list = _adService.GetAdsByCity(city);
return Ok(list);
}
您可以从
中提取它var x = Request.Host.Value;
哪个会给你"london.sitedomain.com:port"
然后你可以做一个
x.Split('.')[0] //(for example)
获取子域
使用Request.Headers.Referrer.Host.Replace(".sitedomain.com", string.Empty);
当然这只适用于您的实时环境,因此您可能需要修改它以在您的本地测试域上以不同方式工作,或提供某种默认回退。我建议将其提取到公共库中的方法中,因为您可能会在很多地方需要它。
或者,如果您知道它永远是第一部分,您可以使用
Request.Headers.Referrer.Host.Substring(0, Request.Headers.Referrer.Host.IndexOf("."));
这应该可以满足您的需求。
HttpContext.Current.Request.UserHostAddress;
HttpContext.Current.Request.UserAgent;
HttpContext.Current.Request.Url.OriginalString;
还有:
Request.Url.Scheme
Request.Url.Authority
Request.ApplicationPath
您可以从 HttpRequestMessage.RequestUri.Host
:
string host = Request.RequestUri.Host;
int index = host.IndexOf('.');
return host.Substring(0, index + 1)