c# - 如何在 Web API 操作上获取子域

标签 c# .net asp.net-web-api subdomain

我正在开发一个分类网站。该网站有很多子域,例如 dubai.sitedomain.comlondon.sitedomain.comnewyork.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);
    }

最佳答案

使用 Request.Headers.Referrer.Host.Replace(".sitedomain.com", string.Empty);

当然这只适用于您的实时环境,因此您可能需要修改它以在您的本地测试域上以不同方式工作,或提供某种默认回退。我建议将其提取到公共(public)库中的方法中,因为您可能会在很多地方需要它。

或者,如果你知道它永远是第一部分,你可以使用

Request.Headers.Referrer.Host.Substring(0, Request.Headers.Referrer.Host.IndexOf("."));

关于c# - 如何在 Web API 操作上获取子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31681028/

相关文章:

.net - UDP负载测试: How do you simulate many UDP clients?

.net - 是否有内置的 TypeConverter 或 UITypeEditor 来编辑字符串列表

c# - 示波器显示

c# - 无法初始化集合 - Fluent Nhibernate

c# - 使用 IEnumerable GetGenericArguments 获取类型

javascript - 从对象返回数据并通过 AngularJS 在 <ul> 中显示

c# - 加载后面的代码后加载javascript代码

javascript - Web API Post方法不保存数据

c# - 在 Web API 中使用 ExceptionFilterAttribute

c# - 仅当使用 unity DI 回收应用程序池时,webapi 调用才会失败