2017-02-15 9 views
1

У меня есть C# метод WebAPI с этой подписью:Массив строк, посланных в WebService получает усечен

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

Когда я называю этот метод из Почтальон со списком п строк в теле, все работает нормально. Мой список просто выглядит

["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... 

Что я делаю неправильно?

ответ

1

Я бы попробовал добавить writer.Close(); линия. Это звучит как поток, который не покраснел все, что он пишет

+0

Bingo! Благодаря! Я добавил эту строку перед вызовом GetResponse, и все результаты теперь попадают в эту службу. – user55295

0

Если ваш POST передает параметры по URL-адресу (что, как я думаю, настроена ваша маршрутизация URL-адреса), вы ограничены длиной URL-адреса примерно на 2800 персонажи.

+0

Как я упоминал в вопросе, это не было проблемой, так как у меня была такая же проблема, будь то 100 или 500 результатов. Но спасибо за ответ. – user55295