16

您将如何在 ASP.NET Web API控制器中读取以下服务器变量?

HTTP_HOST
SERVER_NAME
REMOTE_HOST / REMOTE_ADDR

我看到定义了 System.Net.Http.HttpRequestMessage 请求,但没有看到包含这些变量的集合。

我在具有多个主机标头的单个 IP 上运行一个网站,我需要确定他们用来到达那里的站点。

编辑:

它最终变成了这样:

((System.Web.HttpContextWrapper) Request.Properties["MS_HttpContext"])
    .Request.ServerVariables["HTTP_HOST"]
4

2 回答 2

13

您要查找的信息取决于您使用的主机,并且 Web API 旨在独立于主机。所以....您要查找的信息将被隐藏在 httpRequestMessage.Properties 集合中,并且根据您的主机而有所不同。

如果您转而使用 Owin 适配器,那么您将获得一个标准化的 Owin 环境对象。

于 2013-05-02T13:03:45.643 回答
1

我能够从 Request 中的 RequestUri 中获取所有这些信息

  Request.RequestUri.Scheme + Uri.SchemeDelimiter + 
  Request.RequestUri.Host + (Request.RequestUri.IsDefaultPort ? string.Empty : (string.Concat(":", Request.RequestUri.Port)))
于 2014-05-30T08:47:44.560 回答