Web 客户端的基础连接已关闭

  • 本文关键字:连接 客户端 Web c# .net
  • 更新时间 :
  • 英文 :


我正在将一些 POST 数据发送到以下代码每 5 秒运行一次的 url。运行代码时,第一次发送数据时,没有错误。但是第二次,它在我的client.UploadValues行中抛出了一个例外。

这是错误:

系统中发生了类型System.Net.WebException的未处理异常.dll 其他信息:基础连接已关闭:连接意外关闭。

using (var client = new WebClient())
{
var values            = new NameValueCollection();
values["email"]       = email;
values["mac_addr"]    = mac_addr;
values["system_name"] = system_name;
values["os_version"]  = os_version;
values["screenshot"]  = screenshot;
values["current_application"] = current_application;
var query = client.UploadValues(@"http://some.website.com/api/testing", values);
var responseString = Encoding.Default.GetString(query);
}

我不明白,如果我使用using,那么在第一次调用之后它应该处理所有东西,对吧?那为什么会这样呢?

我很自豪地说,我使用了以下代码来解决这个问题:

WebClient dataUpload = new WebClient();
NameValueCollection dataCollection = new NameValueCollection();
Uri websiteAPI = new Uri("http://some.website.com/api/test");
dataCollection.Add("email", email);
dataCollection.Add("mac_addr", mac_addr);
dataCollection.Add("system_name", system_name);
dataCollection.Add("os_version", os_version);
dataCollection.Add("current_application", current_application);
dataCollection.Add("screenshot", screenshot);
dataUpload.UploadValuesAsync(websiteAPI, "POST" ,dataCollection);

似乎使用UploadValuesAsync解决了这个问题。我看到将数据上传到 url 需要的时间需要很长时间,这可能是错误的原因,因为代码每 5 秒运行一次,上一次调用未完成,并且调用了一组新的本地变量和连接。使用异步可确保在进行新调用时不会中止上一个调用。

最新更新