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

Zac*_*ott 16 asp.net-web-api

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

HTTP_HOST
SERVER_NAME
REMOTE_HOST / REMOTE_ADDR
Run Code Online (Sandbox Code Playgroud)

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

我在一个带有多个主机头的IP上运行一个网站,我需要确定他们用来到那里的网站.

编辑:

结果是这样的:

((System.Web.HttpContextWrapper) Request.Properties["MS_HttpContext"])
    .Request.ServerVariables["HTTP_HOST"]
Run Code Online (Sandbox Code Playgroud)

Dar*_*ler 13

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

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

  • ((System.Web.HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.ServerVariables["HTTP_HOST"] (5认同)