2015-10-17 4 views
1

Я пишу этот короткий модуль, где мне нужно изменить адресный ресурс с помощью метода PUT. Я использую класс WebRequest, чтобы сделать этот запрос URI и GetRequestStream(), чтобы получить поток для записи. Однако, кажется, что после нескольких успешных вызовов метода (и использования PUT для изменения ресурсов) с помощью этого метода ниже мое приложение зависает, а затем выдает ошибку WebException: The request timed out.. Вот как выглядит код:WebRequest - исключение GetRequestStream с исключением

public void SendOffMessageToResource(int res_ID){ 
     var httpWebRequest = WebRequest.Create ("http://192.168.x.x/api/sample_user/resources/1/state"); 
     httpWebRequest.ContentType = "application/json"; 
     httpWebRequest.Method = "PUT"; 

     using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) //here's where the VS seems to take a long long time to step over to the next line when the error happens. 
     { 
      string json = "{\"on\":false}"; 

      streamWriter.Write(json); 
      streamWriter.Close(); 
     } 
    } 

Я уже распоряжаюсь StreamWriter. Я даже не использую метод GetResponse(), потому что все, что мне нужно сделать в этом URI, фактически изменить адресный ресурс с помощью метода PUT. Я не уверен, почему он все еще вызывает ошибку и зависает приложение. Поиск предыдущих потоков показал, что люди должны использовать операторы using для утилизации ресурсов, но я уже делаю это, я думаю, или, может быть, я что-то упускаю? Всегда ли нужно использовать GetResponse() для выполнения запроса и распоряжаться этим всегда в дополнение к этому?

ответ

0

Должен ли я всегда использовать GetResponse() для завершения запроса и распоряжаться этим всегда в дополнение к этому?

Да, именно это.