Слияние кода завершено, страница обновится автоматически
using IP2Region.Net.XDB;
using System;
using System.IO;
using ZR.Infrastructure.IPTools.Model;
namespace ZR.Infrastructure.IPTools
{
public class IpTool
{
private static readonly string DbPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ip2region.xdb");
private static readonly Searcher Searcher;
static IpTool()
{
if (!File.Exists(DbPath))
{
throw new Exception($"IP initialize failed. Can not find database file from {DbPath}. Please download the file to your application root directory, then set it can be copied to the output directory. Url: https://gitee.com/lionsoul/ip2region/blob/master/data/ip2region.xdb");
}
Searcher = new Searcher(CachePolicy.File, DbPath);
}
public static string GetRegion(string ip)
{
if (string.IsNullOrEmpty(ip))
{
throw new ArgumentException("IP为空", nameof(ip));
}
try
{
var region = Searcher.Search(ip);
return region;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
throw new Exception($"搜索IP异常IP={ip}", ex);
}
}
public static IpInfo Search(string ip)
{
try
{
var region = GetRegion(ip);
var array = region.Split("|");
var info = new IpInfo()
{
Country = array[0],
Province = array[2],
City = array[3],
NetworkOperator = array[4],
IpAddress = ip
};
return info;
}
catch (Exception e)
{
throw new Exception("Error converting ip address information to ipinfo object", e);
}
}
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )