2012-06-07 4 views
0

У меня возникла ошибка при закрытии streamwriter после записи содержимого json в запись потока. Ниже приведен код, который я использую. Не могу найти, что не так. он пишет службу REST.Ошибка при закрытии streamwriter с типом содержимого json

WebRequest request = WebRequest.Create(String.Format("{0}/EventLog", restPath)); 
      request.ContentType = "application/json"; 
      request.Method = "POST"; 
      request.ContentLength = jsonstring.Length;     
      System.IO.StreamWriter sw = new System.IO.StreamWriter(request.GetRequestStream()); 
      sw.Write(jsonstring);     
      sw.Close(); 
      sw.Dispose(); 
      HttpWebResponse res = (HttpWebResponse)request.GetResponse(); 

Исключение: «Невозможно закрыть поток, пока не будут записаны все байты».

+0

Что ошибка? Исключение? – GameScripting

+0

Извините, но забыл. Отредактировано сейчас. –

+0

Попробуйте sw.Flush(); перед закрытием – GameScripting

ответ

1

Удостоверьтесь, что request.ContentLength is действительно равен длине содержимого (в байтах).

Это бросает ту же ошибку:

string data = "mydata"; 

WebRequest request = WebRequest.Create("http://google.de/"); 
request.ContentType = "application/json"; 
request.Method = "POST"; 
request.ContentLength = data.Length + 1; 
System.IO.StreamWriter sw = new System.IO.StreamWriter(request.GetRequestStream()); 
sw.Write(data); 
sw.Close(); 
sw.Dispose(); 
HttpWebResponse res = (HttpWebResponse)request.GetResponse(); 
Смежные вопросы