【问题标题】:Get current country and location details using c#使用 c# 获取当前国家和位置的详细信息
【发布时间】:2017-02-02 07:02:26
【问题描述】:

我想知道我的应用程序在哪里使用。

这是获取国家名称和时区的代码:

TimeZone localZone = TimeZone.CurrentTimeZone;
var result = localZone.StandardName;
var s = result.Split(' ');
Console.WriteLine(s[0]);
Console.WriteLine(RegionInfo.CurrentRegion.DisplayName);

但我的问题是,任何人都可以更改时区。根据时区,我可能会得到错误的名称。并且地区设置为美国,不可更改。因为所有用户都有相同的设置,而且我的应用程序有数十万用户。

是否有任何方法可以读取任何操作系统设置/系统设置并获取当前使用我的应用程序的国家/地区?

【问题讨论】:

  • 如果是网页应用,如何使用IP地址定位?
  • 这是一个windows应用程序。我什至尝试使用 IP,尽管我坐在印度,但它给了我美国作为国家名称。

标签: c# cultureinfo regioninfo


【解决方案1】:

您可以使用 IpInfo 通过互联网地址获取用户所在的国家/地区。 除非他们在 VPN 或代理下,否则这是你最好的选择。

class Program
{
    static void Main(string[] args)
    {
        GetCountryByIP();
    }

    public static void GetCountryByIP()
    {
        IpInfo ipInfo = new IpInfo();

        string info = new WebClient().DownloadString("http://ipinfo.io");

        JavaScriptSerializer jsonObject = new JavaScriptSerializer();
        ipInfo = jsonObject.Deserialize<IpInfo>(info);

        RegionInfo region = new RegionInfo(ipInfo.Country);

        Console.WriteLine(region.EnglishName);
        Console.ReadLine();

    }

    public class IpInfo
    {
        //country
        public string Country { get; set; }
    }
}

Notice net framework 4.5 或更高版本才能在没有第三方库的情况下将 json 转换为对象。

如果您针对较低的框架,您可以自己解析信息字符串。

【讨论】:

    【解决方案2】:

    您可以使用 IP 地址来获取位置,有很多选项可以做到这一点,其中之一是 ipinfodb,您可以从这里获取示例 - Class CountryIP VB/C#

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-06
      • 2021-06-11
      • 2012-11-30
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多