我正在为移动设备设计一个系统,一次只能分配给一个作业。因此,我需要通过访问自己唯一的静态IP地址或设备ID来了解正在使用的移动设备。我不想为每台机器自己分配一个ID,这就是为什么静态IP可以工作得很好。
但是,在尝试检索客户端IP地址时,我正在检索无线路由器的ip或其他不是移动设备的ip的ip。
我想将该ip存储在一个表中,并控制分配给它的作业。我怎么能做到这一点?
我已经尝试了以下但我正在获得无线IP:
var hostEntry = Dns.GetHostEntry(Dns.GetHostName());
var ip = (
from addr in hostEntry.AddressList
where addr.AddressFamily.ToString() == "InterNetwork"
select addr.ToString()
).FirstOrDefault();
如果有更好的选择,我宁愿不设置cookie。
TIA!
答案 0 :(得分:1)
当您使用手机访问您的网页时,您对唯一身份证的选项会受到更多限制(与原生移动应用相比)。在过去的13年里,我已经构建了100多个移动(本机)系统,但是从未创建过移动网络应用程序,所以如果我“错过目标”,请原谅我。
如果您正在寻找MAC地址,GUID或手机的IMEI(或其他一些独特的值),在我看来,合理的起点就是使用一些JavaScript - 因为这个查询需要在手机,价值需要作为GET或POST调用的一部分传递。作为替代方案,您可以检查新的HTML5是否支持其主机的任何直接“查询”能力?
如果我是你,我会远离IP地址,因为这可以快速改变(用户正在走向星巴克并通过手机访问服务器,然后在订购咖啡时拿起Wi-Fi),然后上电梯并且在办公室网络上。
尽管如此,您可能希望避免使用Cookie,但它仍然是一种有效的方法(如果唯一值需要在会话中保持不变)。此外,如果值不需要跨会话持久化,则只需将GUID / UUID创建为服务器初始响应的一部分(包含在来自手机的所有后续会话调用中)。任何与cookie相关的问题都存在用户删除cookie的潜在问题,从而使客户端显示为新用户 - 具体取决于您的要求。
最后,自己创建一个GUID(JavaScript)并将其作为请求的一部分提交(显然这不会在会话中持续存在)。
答案 1 :(得分:1)
你应该更好地描述你的环境。看起来您正在运行带有.net代码的IIS。如果您正在寻找使用PHP获取客户端IP地址(如果您也在IIS上运行PHP),则可以使用此处的答案How to get the client IP address in PHP?: 使用$ _SERVER ['HTTP_X_FORWARDED_FOR']并保存$ _SERVER ['REMOTE_ADDR']
如果您只使用.NET运行IIS(无PHP),您可以使用Getting client values of IIS Server Variables in Load Balanced Environment的答案: HttpContext.Current.Request.ServerVariables.Item( “REMOTE_HOST”) 和 Request.ServerVariables( “X - 转发,对于”)
问候
约瑟夫
答案 2 :(得分:0)
您可以使用GetDeviceUniqueID
。参见:
http://blogs.msdn.com/b/windowsmobile/archive/2006/01/09/510997.aspx
...除非您尝试为通过IE移动设备发出网络请求的设备获取唯一的设备ID。
答案 3 :(得分:0)
您可以使用MAC Address。您可以使用.Net Compact Framework。
来检索此内容答案 4 :(得分:0)
我从website得到了答案。
我将Request.ServerVariables [“REMOTE_ADDR”]传递给上述站点中的函数,并获得了客户端计算机名称,我将用它来识别每台机器。 IP可以改变,但计算机名称很少会改变。谢谢你输入。