Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api ASP.NET Web API:如何读取Web API控制器中的服务器变量?_Asp.net Web Api - Fatal编程技术网

Asp.net web api ASP.NET Web API:如何读取Web API控制器中的服务器变量?

Asp.net web api ASP.NET Web API:如何读取Web API控制器中的服务器变量?,asp.net-web-api,Asp.net Web Api,如何在ASP.NETWeb API控制器中读取以下服务器变量 HTTP_HOST SERVER_NAME REMOTE_HOST / REMOTE_ADDR 我看到定义了System.Net.Http.HttpRequestMessage请求,但没有看到包含这些变量的集合 我在一个IP上运行一个带有多个主机头的网站,我需要确定他们使用哪个站点到达那里 编辑: 结果是这样的: ((System.Web.HttpContextWrapper) Request.Properties["MS_Http

如何在ASP.NETWeb 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"]

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


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

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

  Request.RequestUri.Scheme + Uri.SchemeDelimiter + 
  Request.RequestUri.Host + (Request.RequestUri.IsDefaultPort ? string.Empty : (string.Concat(":", Request.RequestUri.Port)))

这可能就是你要找的:@MajorByte,非常相似。是的。很好的建议。我可以看到
Request.Properties[“MS_HttpContext”].Request.Url
以及URLreferer。最大的问题是它是否代表他们访问过的站点的主机头。我想知道,无论托管环境如何,读取此信息的方法是否一致?((System.Web.HttpContextWrapper)Request.Properties[“MS_HttpContext”]).Request.ServerVariables[“HTTP_host”]Zim博士,您的评论应该有自己的答案。我每隔一段时间就会回到这里,在找到你的评论之前,我必须阅读整个页面。但不适用于服务器变量的任何其他内容。