ASP.NET Web API:如何在Web API控制器中读取服务器变量?

时间:2013-05-02 05:14:28

标签: asp.net-web-api

您如何阅读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"]

2 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:1)

我能够从Request

中的RequestUri获取所有信息
  Request.RequestUri.Scheme + Uri.SchemeDelimiter + 
  Request.RequestUri.Host + (Request.RequestUri.IsDefaultPort ? string.Empty : (string.Concat(":", Request.RequestUri.Port)))