上传时webclient超时

时间:2012-02-10 18:20:02

标签: c# file upload webclient

我知道WebClient没有超时属性。我四处搜索并找到了不同的代码,你可以从httpwebrequest继承webclient并设置超时例如:

   class MyWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);
        if (request is HttpWebRequest)
        {
            (request as HttpWebRequest).KeepAlive = false;
            (request as HttpWebRequest).Timeout = 25000; //(tried different values)
        }
        return request;
    }
}

但这似乎没有任何作用。超时发生在100秒之后。我试图通过我做的客户端应用程序上传大文件。 PHP在服务器端运行,并设置所有超时/ maxupload值。

异常消息是:

the request was aborted the request was canceled

请帮帮我。

2 个答案:

答案 0 :(得分:3)

另一个答案中的代码对我有用,我只将第9行更改为:

((HttpWebRequest)request).Timeout = System.Threading.Timeout.Infinite;

答案 1 :(得分:0)

httpWebRequest的默认值是100秒,所以在代码中没有设置好的东西。

您是否尝试过设置.KeepAlive = true;

MSDN表示将其设置为false

  

使用HTTP / 1.1时,默认情况下Keep-Alive处于启用状态。将KeepAlive设置为false可能会导致向服务器发送Connection:Close标头。

这是有道理的,因为您似乎正确设置了超时。您可以双击here

This所以问题也有一个答案,将该错误消息链接到保持活动属性。