WebClient UploadFile错误

时间:2009-10-28 00:17:06

标签: .net webclient system.net.webexception

我正在尝试使用System.Net.WebClient.UploadFile将文件上传到Web服务器,但我不断收到WebException。具体来说,我得到3个错误。我不知道为什么我没有得到同样的错误,但它们似乎都与我在网上找到的相关。

  • 请求已中止:请求已取消。
  • 连接已关闭。再试一次。
  • 远程主机强行关闭现有连接。

它似乎有点随机(并不总是相同的文件,时间量,或任何其他模式,我可以弄清楚)。这也不会发生在我的工作网络上(上传时间不到2秒),但确实是在家中通过DSL发生(上传大约需要2分钟)。

根据我在网上找到的,这些错误与保持活动有关。不幸的是,WebClient没有提供任何方法来关闭它们(我不确定我是否还想要,因为这是一个性能特性)。

我认为它可能与超时有关,但我无法弄清楚原因。服务器是ASP.Net MVC,超时设置为一小时。

    <httpRuntime
        maxRequestLength="10024" 
        executionTimeout="3600"
        /><!-- 10024 = 10MB, 3600 = 1hr -->

我对解决这个问题的两种方法感兴趣,所以它不会发生,而且恢复技术(简单地再次提出请求似乎没有效果)。

一些背景知识,这适用于将照片上传到服务器的WinForms应用程序。该服务器是ASP.Net MVC应用程序。客户端已经正常工作了很长时间,但现在因为我将其切换到ASP.Net MVC(它使用带有SA FileUp的经典ASP)而失败。客户端只更改为容纳新URL,除了它几乎相同。

1 个答案:

答案 0 :(得分:2)

异常“请求已中止:请求已取消。”如果WebClient在文件传输期间超时,则抛出此异常。如果没有进行文件传输,您将收到“操作已超时”。

客户端正在发生超时。 WebClient不允许您设置超时,HttpWebRequest(WebClient使用的)的默认值为100秒。我想我必须弄清楚如何在使用HttpWebRequest时取得进展。我还必须弄清楚为什么ASP.Net文件传输比使用经典ASP的SAFileUp慢。

更新:我创建了一个WebHelper类,它取代了WebClient,但提供了对底层WebRequest必要功能的更多访问。它还为WebClient提供了许多附加功能。如果您有兴趣,请访问CodePlex上的BizArk project