我是ASP.NET MVC堆栈的新手,我想知道简单的Page对象和Request ServerVariables对象发生了什么?
基本上,我想提取客户端PC的IP地址,但我无法理解当前的MVC结构如何改变了所有这些.
据我所知,大多数变量对象已被HttpRequest变体所取代.
有人关心分享一些资源吗?ASP.NET MVC世界中有很多东西要学习.:)
例如,我有一个带有当前函数的静态类.如何使用ASP.NET MVC获得相同的结果?
public static int getCountry(Page page)
{
return getCountryFromIP(getIPAddress(page));
}
public static string getIPAddress(Page page)
{
string szRemoteAddr = page.Request.ServerVariables["REMOTE_ADDR"];
string szXForwardedFor = page.Request.ServerVariables["X_FORWARDED_FOR"];
string szIP = "";
if (szXForwardedFor == null)
{
szIP = szRemoteAddr;
}
else
{
szIP = szXForwardedFor;
if (szIP.IndexOf(",") > 0)
{
string [] arIPs = szIP.Split(',');
foreach (string item in arIPs)
{
if (!isPrivateIP(item))
{
return item;
}
}
}
}
return szIP;
} …Run Code Online (Sandbox Code Playgroud) 你能否告诉我如何在使用MVC 6时在ASP.NET中获取客户端IP地址Request.ServerVariables["REMOTE_ADDR"]不起作用.
在ASP.NET中有一个System.Web.HttpRequest类,它包含ServerVariables可以从REMOTE_ADDR属性值为我们提供IP地址的属性.
但是,我找不到类似的方法从ASP.NET Web API获取远程主机的IP地址.
如何获取发出请求的远程主机的IP地址?
我想获得在我的网站上注册的IP地址.如何在ASPNET中执行此操作.我使用了以下代码,但是,它没有获得正确的IP地址
string ipaddress = Request.UserHostAddress;
Run Code Online (Sandbox Code Playgroud) 我一直试图解决这个问题,但在向所有服务器的asp.net中的页面发出请求时找不到可靠的方法来获取客户端IP地址.
我正在使用Microsoft Visual Studio 2017提供的Angular模板开发ASP.Net Core 2.1.我的客户端应用程序工作正常.在用户认证竞争之后,我想启动用户会话管理,其中我存储客户端用户IP地址.我已经在互联网上搜索过这个,但到目前为止还没有找到任何解决方案.
以下是我访问过的一些参考链接:
在我的ValuesController.cs中,我也试过下面的代码:
private IHttpContextAccessor _accessor;
public ValuesController(IHttpContextAccessor accessor)
{
_accessor = accessor;
}
public IEnumerable<string> Get()
{
var ip = Request.HttpContext.Connection.RemoteIpAddress.ToString();
return new string[] { ip, "value2" };
}
Run Code Online (Sandbox Code Playgroud)
其中ip变量我得到空值并得到此错误
Request.HttpContext.Connection.RemoteIpAddress.Address引发了Type'System.Net.Sockets.SocketException'的异常
你能告诉我如何在ASP.NET Core 2.1中获取客户端IP地址吗?
有没有人知道如何根据c#dot net中的Web应用程序的IPV6地址限制用户登录?
我已经使用IPV4完成了这项功能并且工作正常,但我想根据用户的IPV6来限制用户的Web应用程序.
这可能吗?
我有一组IP地址.
部署我的应用程序后,我希望只能从特定的IP地址访问我的应用程序.
如何使用Global.asax(而不是通过IIS)实现此目的?
我想在我的代码中获取访问者的公共 IP 地址。
我写了下面的代码来获取它:
var context = System.Web.HttpContext.Current;
string ip = String.Empty;
if (context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
ip = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else if (!String.IsNullOrWhiteSpace(context.Request.UserHostAddress))
{
ip = context.Request.UserHostAddress;
}
if (ip == "::1")
ip = "127.0.0.1";
return ip;
Run Code Online (Sandbox Code Playgroud)
我没有得到确切的 IP 地址它返回的值如下:fe80::9419:dfb3:22ce:4e88%68但是当我在什么是我的 IP 中看到我的 IP 时?它显示13.67.58.30。我将如何获得确切的 IP 地址?
我正在尝试从ASP.NET MVC 5获取用户的IP地址.我已经查找了各种示例,例如:
它们都产生了相同的结果:用户被认为是网络的内部.我有朋友试试他们的手机(不在网络上).这是我最近的尝试:
private static Logger _logger = LogManager.GetCurrentClassLogger();
public static bool IsIpInternal()
{
var ipAddress = HttpContext.Current.Request.UserHostAddress;
var logEvent = new LogEventInfo(LogLevel.Info, _logger.Name, ipAddress);
_logger.Log(logEvent);
try
{
if (ipAddress != null)
{
var ipParts = ipAddress.Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries)
.Select(int.Parse).ToArray();
var isDebug = System.Diagnostics.Debugger.IsAttached;
if (ipParts[0] == 10)
{
return true;
}
}
}
catch (Exception e)
{
logEvent = new LogEventInfo(LogLevel.Error, _logger.Name, e.Message);
_logger.Log(logEvent);
return false;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
显示10.xxx.xx.xxx所有请求的日志(基于日志).这是一个内部地址,而不是连接到Web应用程序的客户端的IP.在 …
如何在C#中获取客户端机器的IP地址.我想为我的在线应用程序保留一个日志寄存器,并保留日志系统的IP地址,我想获取客户端的IP地址....
预谢谢...
问:
我需要知道以下几点之间的区别:
Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ;
Request.ServerVariables["REMOTE_ADDR"];
System.Web.HttpContext.Current.Request.UserHostAddress;
System.Net.IPAddress[] strClientIPAddress = System.Net.Dns.GetHostAddresses(Environment.MachineName);
Run Code Online (Sandbox Code Playgroud)
我想获取客户端IP地址(访问该网站的用户),我对之前的方法感到困惑,哪一个更准确.
c# ×10
asp.net ×6
.net ×2
asp.net-core ×2
asp.net-mvc ×2
ip ×2
ip-address ×2
.net-3.5 ×1
http ×1
ipv6 ×1