我是c#的新手,我遇到将文件上传到网络服务器的问题。
我在生成代码时使用this作为模板。
try
{
using (WebClient client = new WebClient()) {
client.Headers.Add("Content-Type", "binary/octet-stream");
ans = client.UploadFile(remoteSiteFileURL, "POST", @"D:\test.txt");
}
string responseAsString = Encoding.Default.GetString(ans);
MessageBox.Show("Done" + responseAsString);
}
当我调用此代码时,我什么也得不到,只有在某个时间(可能是一分钟)'The operation has time out'
之后才会出现异常。
文件test.txt小于1kb(实际上是几个字节)。 Web服务(站点)工作,我轻松上传了500kb的数据。
我在测试上传时使用了下一个html表单:
<h1>Upload file form</h1>
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="2097152" />
Send file<input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
没有身份验证,在upload.php中设置了会话控制。
UPDATE1: 1)当我运行此代码时,我无法关闭我的应用程序。它挂起来了。 2)我关闭了防火墙,这没有帮助。
UPDATE2: 我把记录器放在了'upload.php&#39;在调用时写入文件。所以,我的日志中没有任何内容,即它没有被调用(我不确定它。可能是在传输完整文件时调用它(脚本))。
问题可能是什么?我错过了什么吗?
答案 0 :(得分:1)
解决方法是增加此timout值。但是WebClient类没有这样的属性或方法。因此,您需要在自己的类中包装WebClient,以便在上载数据之前设置基类的超时。 而且你可以尝试WebClient的异步方法。 WebClient.UploadFileAsync
答案 1 :(得分:0)
This sample不首先设置标头。还有运气吗?