【问题标题】:Underlying connection closed for WebClient为 WebClient 关闭了基础连接
【发布时间】:2018-06-29 20:51:00
【问题描述】:

我将一些 POST 数据发送到以下代码每 5 秒运行一次的 url。代码运行时,第一次发送数据时,没有报错。但是第二次,它在我的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,那么在第一次调用之后它应该处理所有内容,对吗?那为什么会这样呢?

【问题讨论】:

  • 你可能会在服务器端做一些进一步的调试,看看为什么它会在你第二次上传时关闭连接。
  • @LexLi 我无​​法控制服务器,因为我的雇主没有为此提供凭据。关于这个问题,我仍然给他发了信息。对我来说,它在本地主机上运行良好。
  • 可能是服务器超时,通过关闭连接来实现。失败的请求需要多长时间?
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。见:minimal reproducible example
  • @Enigmativity 好吧,下次我会尝试更清楚:)

标签: c# .net


【解决方案1】:

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

        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 可确保在进行新调用时不会中止先前的调用。

【讨论】:

    猜你喜欢
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    相关资源
    最近更新 更多