使用IP地址获取客户端计算机的位置

时间:2011-12-14 06:44:00

标签: c# asp.net

我正在尝试使用ip地址获取客户端计算机的位置。只有在客户端才能访问互联网 他/她提供代理身份验证。 我们说客户需要在浏览器上访问“www.google.com”,然后立即进行身份验证 提示窗口打开然后客户输入他/她的用户名和密码。但少数用户可能会这样做 不需要提供身份验证才能访问互联网。

这段代码对我没有帮助......

string url = "http://freegeoip.net/xml/";
WebClient wc = new WebClient();

WebProxy proxyObj = new WebProxy("http://freegeoip.net/xml/");
proxyObj.Credentials = CredentialCache.DefaultCredentials;

Uri uri = new Uri(url);
MemoryStream ms = new MemoryStream(wc.DownloadData(uri));
XmlTextReader rdr = new XmlTextReader(url);
XmlDocument doc = new XmlDocument();
ms.Position = 0;
doc.Load(ms);
ms.Dispose();

在上面的代码中,如果我使用用户名,密码和域添加网络凭证实例,那么它的工作完美 我需要从用户(客户端)获取用户名和密码,而不是在代码本身中提供默认的网络凭证 机)。

我的问题是如何提示验证所需窗口并获取用户名和密码以从URL加载下载 如果有人对这个问题有所了解,我会很高兴...

编辑:不知何故基本认证窗口提示,现在我可以获得可用于凭证的用户名和密码

try
        {
             var reg = HttpContext.Current.Request;


             if (!String.IsNullOrEmpty(reg.Headers["Authorization"]))
             {
                 var cred = System.Text.ASCIIEncoding.ASCII.GetString(Convert.FromBase64String(Request.Headers["Authorization"].Substring(6))).Split(':');
                 var user = new { Name = cred[0], Pass = cred[1] };
                 string url = "http://freegeoip.net/xml/";
                 WebClient wc = new WebClient();
                 WebProxy wProxy = new WebProxy();
                 ICredentials crd;

                 crd = new NetworkCredential("'" + cred[0] + "'", "'" + cred[1] + "'");

                 wProxy = new WebProxy("myproxy", true, null, crd);

                 wc.Proxy = wProxy;

                 Uri uri = new Uri(url);
                 string content = wc.DownloadString(uri);

             }
             else
             {
                 try
                 {

                     //var reg = HttpContext.Current.Request;
                     if (String.IsNullOrEmpty(reg.Headers["Authorization"]))
                     {
                         var res = HttpContext.Current.Response;
                         res.StatusCode = 401;
                         res.AddHeader("WWW-Authenticate", "Basic realm = \"freegeoip\"");
                         //res.End();
                     }
                 }
                 catch (Exception ex)
                 {

                 }
             }

        }
        catch(Exception ex)
        {

        }

但仍然抛出“无法连接到远程服务器”

0 个答案:

没有答案