发送到WebService的字符串数组将被截断

时间:2017-02-15 18:27:57

标签: c# json web-services

我有一个带有此签名的C#WebApi方法:

[HttpPost]
[Route("getbyid/{date}")]
public Response Get(DateTime date, [FromBody] List<string> ids)

当我从Postman调用这个方法时,身体中有n个字符串的列表,一切正常。我的列表看起来像

["id1","id2","id3"...]

但是当我写一个小的C#客户端来调用它时,我发现数组被截断了。这不是邮件大小的问题。如果我发送100件物品,介于75-80之间,就可以使用它。如果我发送500约475成功。我通过记录确认该列表在调用服务之前有500个项目,而在控制器内部则少于500个。

这是我的客户代码:

string url = ".../getbyid/2017-01-01";
List<string> payload = new List<string>();
// logic to put 500 items in the list
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UseDefaultCredentials = true;
request.Method = "POST";
request.ContentType = "application/json";
StreamWriter writer = new StreamWriter(request.GetRequestStream());
JsonWriter jsonWriter = new JsonTextWriter(writer);
JsonSerializer json = new JsonSerializer();
json.Serialize(jsonWriter, payload);
WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
if (responseStream == null) throw new EndOfStreamException();
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
// do processing...

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我会尝试添加一个writer.Close();线。这听起来像一个没有冲刷所有它的写入

的流

答案 1 :(得分:0)

如果您的POST通过URL传递参数(我认为您的URL路由设置为),则限制为URL长度为2800个字符。