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