2013-10-22 81 views
1

我有一个函数UpdateCRM(),它将向我的CRM服务器发出http web请求以更新数据。 如果它调用一次,它工作正常。但是当我们在一个循环内调用UpdateCRM()时,它在更新某个记录之后会超时。 有没有更好的解决问题。HttpWebRequest获取超时问题

这是我的UpdateCRM()方法。

function UpdateCRM() 
{ 
HttpWebRequest httpWebRequest = null; 
//Convert object to JSON 
sJSON = oSerializer.Serialize(emailSendoutList); 

httpWebRequest = (HttpWebRequest)WebRequest.Create(ConfigUtility.crmUpdateServiceURL + "/UpdateCrmAfterEMailed"); 
httpWebRequest.ContentType = "text/json"; 
httpWebRequest.Method = "POST"; 
httpWebRequest.Timeout = 600000; 
httpWebRequest.ReadWriteTimeout = 600000; 
httpWebRequest.ContentLength = sJSON.Length; 

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
{ 
streamWriter.Write(sJSON); 
streamWriter.Flush(); 
streamWriter.Close(); 
} 

}

回答

1

您需要关闭使用后提出异议。

尝试添加此后使用streamwriter。

httpWebRequest.abort(); 

编辑:

试试这个样子,也许它响应导致的吗?

HttpWebResponse Response = (HttpWebResponse)Request.GetResponse(); 
using (var streamWriter = new StreamWriter(Response.GetRequestStream())) 
{ 
streamWriter.Write(sJSON); 
streamWriter.Flush(); 
streamWriter.Close(); 
} 
Response.Close(); 
+0

我已添加代码。 finally { httpWebRequest.Abort(); httpWebRequest = null; } –

+0

您是否尝试过申明一个响应对象,稍后您可以在阅读Streamwriter后关闭它? –

+0

是的,关闭后响应速度稍快。 –