Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql .Net核心API无法返回结果,包括System.Net.IPaddress_Postgresql_Asp.net Core Webapi - Fatal编程技术网

Postgresql .Net核心API无法返回结果,包括System.Net.IPaddress

Postgresql .Net核心API无法返回结果,包括System.Net.IPaddress,postgresql,asp.net-core-webapi,Postgresql,Asp.net Core Webapi,我的数据库是Postgressql,它在.net中具有INET类型。我应该使用IPadress进行映射,但当我使用它时,客户端出现无法访问页面错误,当我使用字符串时,我从数据库中得到一个错误,它说不能从INET将大小写转换为字符串 var rslt = _context.tenmins.Where(s => s.m_turbine_id == IPAddress.Parse("192.168.39.82" )&& s.m_time_stamp >= Dat

我的数据库是Postgressql,它在.net中具有INET类型。我应该使用IPadress进行映射,但当我使用它时,客户端出现无法访问页面错误,当我使用字符串时,我从数据库中得到一个错误,它说不能从INET将大小写转换为字符串

      var rslt = _context.tenmins.Where(s => s.m_turbine_id == IPAddress.Parse("192.168.39.82" )&& s.m_time_stamp >= DateTime.Now.AddDays(-1)).Take(2).ToList();
        return rslt ;
如何在我得到结果后更改为字符串,这是我的结果的屏幕截图,无法在浏览器上返回!

对于此问题,其原因是
IPAddress
不便于序列化。您可以尝试实现自己的
JsonConverter

  • IPAddressConverter

    public class IPAddressConverter : JsonConverter
    {
        public override bool CanConvert(Type objectType)
        {
            return (objectType == typeof(IPAddress));
        }
    
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            writer.WriteValue(value.ToString());
        }
    
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            return IPAddress.Parse((string)reader.Value);
        }
    }
    
  • 寄存器转换器

    services.AddMvc()
            .AddJsonOptions(opt => {
                opt.SerializerSettings.Converters.Add(new IPAddressConverter());
            }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    
  • 控制器动作

    public List<Address> PostSql()
    {
        var rslt = _context.Addresses.Where(s => s.IP == IPAddress.Parse("192.168.39.82")).Take(2).ToList();
        return rslt;
    }
    
    公共列表PostSql()
    {
    var rslt=_context.Addresses.Where(s=>s.IP==IPAddress.Parse(“192.168.39.82”).Take(2.ToList();
    返回rslt;
    }
    

  • 你犯了什么错误?我用
    publicpaddress IP{get;set;}
    Npgsql.EntityFrameworkCore.PostgreSQL
    进行了测试,它工作正常。