【发布时间】:2019-08-22 10:30:33
【问题描述】:
我到处搜索,但没有提到此键的定义位置,或类似的键,例如 HTTP_X_FORWARDED_FOR、REMOTE_ADDR 等。
MSDN documentation 没有提到任何有用的东西。我发现的唯一接近有用的是一些堆栈溢出问题(this 和 this),以及 this 简短的博文。
可悲的是,这些都没有解决我当前的问题 - 所有这些字典键来自哪里?它们的规范在哪里,以便人们通过查看它们所包含的内容来知道它们的存在并学会利用它们?
编辑:我使用的是 .NET Framework 4.6.0,其中 System.Net.Http 的版本是 4.0.0.0。 要获取客户端 IP,我正在执行以下操作:
public string GetSomeIp(HttpRequestMessage request)
{
HttpContextWrapper context =
request.Properties["MS_HttpContext"] as HttpContextWrapper;
return (context == null) ?
string.Empty : (context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
?? context.Request.ServerVariables["REMOTE_ADDR"]).Split(',')[0].Trim();
}
我想查找文档,其中详细解释了 MS_HttpContext 所做/持有的内容,以及 REMOTE_ADDR、HTTP_X_FORWADED_FOR 以及它们的定义位置,因此我可以查看所有其他键和更详细地了解它们的实现/正确使用。
我知道以下 server variables,但此处未提及此处使用的密钥。 (REMOTE_ADDR除外)
【问题讨论】:
-
@jdweng 当我搜索“MS_HttpContext”时没有弹出任何有用的信息。
-
试试:_httpcontext
-
@jdweng 我得到了一些结果,但我仍然看不到这些键可能在哪里定义或解释。他们是 Owin 的一部分吗?
-
MS_HttpContext 是人们用来在 WebAPI 应用程序中获取 HttpContext 的 hack。这似乎是一个实现细节,我不相信它会被记录在案。正如@Mikhail 已经回答的那样,其他所有内容都是 IIS 服务器变量,它们在您提供的链接中进行了描述。
标签: c# asp.net asp.net-web-api