WebClient的基础连接已关闭

时间:2018-06-29 20:51:00

标签: c# .net

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

这是错误:

  

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

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,那么在第一次调用之后,它应该处理掉所有内容,对吗?那为什么会这样呢?

1 个答案:

答案 0 :(得分:0)

我很自豪地说我使用以下代码来解决此问题:

        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秒运行一次,上一次调用未完成,并且新的一组本地变量和连接被称为。使用异步可确保在进行新呼叫时不会中断先前的呼叫。