【发布时间】:2017-05-16 07:05:02
【问题描述】:
我正在尝试使用rest api 在controller 上写入一些数据。
但是发生了一些奇怪的事情。前 1、2、3 次写入都很好,但应用程序冻结并出现超时异常,我没有关闭什么吗?
这是下面的code:
WebRequest client = (read) ? HttpWebRequest.Create(ReadUri) : HttpWebRequest.Create(WriteUri);
client.Method = "POST";
client.ContentType = "application/json";
CredentialCache creds = new CredentialCache();
creds.Add(new Uri(WriteUri), "Basic", new NetworkCredential(*******));
client.Credentials = creds;
client.PreAuthenticate = true;
((HttpWebRequest)client).AllowWriteStreamBuffering = true;
client.Timeout = 10000;
//Skipped all data formatting
byte[] data = Encoding.UTF8.GetBytes(req);
client.ContentLength = data.Length;
Stream dataStream = null;
try
{
//HttpWebResponse response = (HttpWebResponse)client.GetResponse();
dataStream = client.GetRequestStream();
dataStream.Write(data, 0, data.Length);
dataStream.Flush();
dataStream.Close();
dataStream.Dispose();
dataStream = null;
}
catch (WebException we)
{
string message = we.Message;
}
finally
{
client = null;
}
【问题讨论】:
-
您可能应该得到响应(在写入请求流之后)并处理它以从连接中释放请求。否则,它会保留响应数据,直到您决定从中读取。将
client设置为null不会释放任何东西(无论如何不会立即释放)。 -
我试着听了回复并工作了:) 谢谢!如果你回答我会投票给你,否则我会投票给你。
标签: c# httpwebrequest compact-framework windows-ce