Postgresql .Net核心API无法返回结果,包括System.Net.IPaddress
我的数据库是Postgressql,它在.net中具有INET类型。我应该使用IPadress进行映射,但当我使用它时,客户端出现无法访问页面错误,当我使用字符串时,我从数据库中得到一个错误,它说不能从INET将大小写转换为字符串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
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
进行了测试,它工作正常。