C# WebClient的基础连接已关闭

C# WebClient的基础连接已关闭,c#,.net,C#,.net,我正在向url发送一些POST数据,下面的代码每5秒运行一次。当代码运行时,第一次发送数据时,没有错误。但是第二次,它在我的client.UploadValues行中抛出了一个异常 这就是错误: System.dll中发生类型为System.Net.WebException的未处理异常 其他信息:基础连接已关闭:连接意外关闭 我不明白,如果我使用的是使用的,那么在第一次调用之后,它应该处理所有东西,对吗?那么为什么会发生这种情况呢?我很自豪地说,我使用了以下代码来解决这个问题:

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

这就是错误:

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


我不明白,如果我使用的是
使用的
,那么在第一次调用之后,它应该处理所有东西,对吗?那么为什么会发生这种情况呢?

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

        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秒运行一次,之前的调用没有完成,并且调用了一组新的本地变量和连接。使用async可确保在进行新呼叫时不会中止上一次呼叫。

您可以在服务器端进行进一步调试,以了解为什么在第二次上载时它会关闭连接。@LexLi我无法控制服务器,因为我的雇主没有给我相应的凭据。关于这个问题,我一直在给他发信息。对我来说,它在本地主机上运行得很好。可能是服务器超时,并通过关闭连接来实现。失败的请求需要多长时间?寻求调试帮助的问题(“为什么此代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请看:@Enigmativity好吧,下次我会尽量弄清楚:)
        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);