Asp.net web api ASP.NET Web API:如何读取Web API控制器中的服务器变量?
如何在ASP.NETWeb 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
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博士,您的评论应该有自己的答案。我每隔一段时间就会回到这里,在找到你的评论之前,我必须阅读整个页面。但不适用于服务器变量的任何其他内容。