2009-12-30 83 views
0

我找不到没有aspx页面的IP地址(所以在Linux服务器上)。如果它可以通过wcf工作,那么它也很好。获取IP地址(当没有ASP.NET可用(在Linux服务器上))

+3

您可以请扩展您正在尝试完成的任务吗?我不确定你想要做什么。什么IP地址?在客户端或服务器上的那个? – 2009-12-30 15:00:12

+0

我的错误,我的意思是客户端IP地址。 我尝试使用WebClient的一个小的API http://www.hostip.info给出地址的位置,但不是IP。 http://www.whatismyip.com/automation/n09230945.asp(甚至http://www.google.com/)在WebClient的DownloadStringCompleted中给出SecurityException:安全错误。我找不到原因。 – user240617 2009-12-31 06:28:16

回答

1

我认为最好的选择是让Web服务将IP地址返回给Silverlight客户端,前提是您可以在应用程序中使用WCF。我不相信直接在Silverlight中获取客户端IP的直接方式。

就这样一个简单的Web方法应该工作:

[OperationContract] 
public string GetClientIpAddress() 
{ 
    return HttpContext.Current.Request.UserHostAddress; 
} 

您可能无法如果请求是通过代理服务器来获得实际的客户机IP地址,但你可以检查HTTP_X_FORWARDED_FOR头以及如果可用的话。

HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 

我不会依赖,作为一个可靠的客户端IP地址,虽然,因为不是所有的代理服务器遵守这一HTTP头,它也很容易被欺骗。