2015-10-17 111 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()完成请求并处理除此之外的任何内容?

是的,就是这样。