如何解决C# Rest api - 发布列表对象始终为空
我正在使用此代码将一些对象发布到我的 Rest API:
public static string Post<T>(string uri,T data,string contentType = "application/json",string method = "POST")
{
byte[] dataBytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data));
string str = JsonConvert.SerializeObject(data);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
request.ContentLength = dataBytes.Length;
request.ContentType = contentType;
request.Method = method;
using (Stream requestBody = request.GetRequestStream())
{
requestBody.Write(dataBytes,dataBytes.Length);
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
当发布一个简单的对象时,代码工作得很好:
[Route("api/Name/{ActivationKey}")]
public async Task<HttpResponseMessage> Post([FromBody] SomeKindOfObject value,string ActivationKey)
{
Some code...
}
但是当我尝试发布相同对象的列表时,我在控制器中得到 null
:
[Route("api/Name/{ActivationKey}")]
public async Task<HttpResponseMessage> Post([FromBody] List<SomeKindOfObject> value,string ActivationKey)
{
Value is always null.
}
什么可能导致这种情况,我该如何解决?
解决方法
试试
public async Task<HttpResponseMessage> Post([FromBody] SomeKindOfObject[] value,string ActivationKey)
反序列化可能与其目标容器类型相反,即。列表 vs 数组 vs 集合。
,显然问题是我尝试发布的列表太大(超过 15,000 行),我所做的是将列表拆分为较短的列表并单独发布每个部分并且它起作用了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。