httprequest.UserHostName in .net core

6

无法在HttpRequest中找到UserHostName属性。在任何论坛中都没有相关信息。这个属性被删除了吗?有什么想法吗?

3个回答

9
接受的答案不正确。 someHttpContext.Request.Host 对应于HTTP请求中使用的Host标头。例如:获取http://example.org/test将导致example.orgUserHostName以前返回发出请求的客户端IP地址的DNS主机名(即someHttpContext.Connection.RemoteIpAddress)。现在看来唯一的方法是使用例如Dns.GetHostEntry手动解析IP地址的DNS主机名。

1
是的,没错,这也是我的答案所说的。你需要手动DNS解析IP地址以获取“UserHostName”等效值。 - Jesper
通过对RemoteIpAddress执行DNS解析,例如使用Dns.GetHostEntry等方法。 - Jesper
请问您能否提供一个获取“UserHostName”的示例?因为您似乎只是在猜测它是否可能存在,而并不确定100%。 - manymanymore
为什么不在你的回答中包含那个细节呢? - manymanymore
1
说得对,但我认为这个方法并不那么神秘,需要那种程度的解释,而且我认为仅仅提到哪个方法并把实际代码留给读者作为练习并不是没有帮助或粗鲁的行为。如果有人需要那种程度的帮助,我链接的文档实际上有它,而且还有更多的详细信息,我也不觉得需要在这里重复。 - Jesper
显示剩余5条评论

2
在“旧版”ASP.NET中,这依赖于IIS,它将用户主机名放入“REMOTE_HOST”服务器变量中。
由于ASP.NET Core是跨平台的,因此没有此功能。
但是,如果您在Windows上运行,并且在IIS上运行,则仍可以通过HttpContext访问它。
var svf = httpContext.Features.Get<IServerVariablesFeature>();
if (svf == null)
{
    //we're on linux, sorry, no luck
}
else
{
    var hosteName = svf["REMOTE_HOST"];
}

-1

试试这个

this.Request.Host.Value

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接