【发布时间】:2021-07-26 18:59:25
【问题描述】:
我使用 dotnet core 3.1,我需要网站访问者的 IP 地址,但是当我尝试获取它时,返回的是服务器的 IP,而不是客户端的 IP。这是我使用的代码:
var ip = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
这将返回 null。然后我尝试使用第三方网站获取我的 IP 地址。所以我这样做了:
WebRequest request = WebRequest.Create("https://api.ipify.org/");
这也将返回服务器的 IP 地址,而不是客户端。然后我尝试了这个:
var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (var ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
return ip.ToString();
}
}
还有这个:
string localIP = string.Empty;
using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0))
{
socket.Connect("8.8.8.8", 65530);
IPEndPoint endPoint = socket.LocalEndPoint as IPEndPoint;
localIP = endPoint.Address.ToString();
}
但它们返回本地 IP 地址。 return localIP.ToString();
并且某些代码行 HTTPContext.Current.Request.UserHostAddress 或 ServerVariables["REMOTE_ADDR"] 在 dotnet core 中无效。
有什么建议吗?
【问题讨论】:
-
这能回答你的问题吗? How do I get client IP address in ASP.NET CORE?(检查所有答案,不仅仅是接受的答案)
-
我用这个:
string ipAddress = Request.HttpContext.Connection?.RemoteIpAddress?.ToString(); -
@StephanBauer 这将返回 null;我确实配置了我的 startup.cs 文件,但没有成功。
-
@Catalin 这也返回 null,亲爱的朋友。
-
只需尝试添加Microsoft.AspNetCore.HttpOverrides NuGet包并根据此文档使用它:thecodebuzz.com/get-ip-address-in-asp-net-core-guidelines。希望对你有帮助
标签: c# asp.net-mvc asp.net-core