C# 上载时网络客户端超时
我知道WebClient没有timeout属性。我四处搜索并找到了不同的代码,您可以在其中从httpwebrequest继承webclient并设置超时,例如:C# 上载时网络客户端超时,c#,file,upload,webclient,C#,File,Upload,Webclient,我知道WebClient没有timeout属性。我四处搜索并找到了不同的代码,您可以在其中从httpwebrequest继承webclient并设置超时,例如: class MyWebClient : WebClient { protected override WebRequest GetWebRequest(Uri address) { WebRequest request = base.GetWebRequest(address); i
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
请帮帮我 httpWebRequest的默认值为100秒,因此代码中的某些设置不正确 您是否尝试将
.KeepAlive=true代码>
将其设置为false可以
使用HTTP/1.1时,默认情况下“保持活动”处于启用状态。将KeepAlive设置为false可能会导致向服务器发送连接:Close头
这是有道理的,因为您似乎正在正确设置超时。你可以再检查一遍
所以,这个问题还有一个答案,将错误消息链接到keep alive属性。另一个答案中的代码对我有效,我只将第9行更改为:
((HttpWebRequest)request).Timeout = System.Threading.Timeout.Infinite;
如果keepalive是真的,你会得到同样的问题吗。False会将连接关闭头发送到服务器(as)。
是一种非常糟糕的做法;如果
不是
类型,它将抛出NullReferenceException
,这在诊断问题时毫无帮助。改用直接强制转换:((HttpWebRequest)请求)。超时