【问题标题】:Uploading file via WebClient通过 WebClient 上传文件
【发布时间】:2026-01-28 01:45:01
【问题描述】:

我必须将一个文件(使用我之前的代码生成的 XML)上传到提供以下信息的 Web 服务:

网址 (http://www.example.com/upload)
港口 (1234)
方法(POST 或 PUT)

所以我在这里搜索了很多,发现了一些使用 WebClient 的代码,似乎正是我需要的。

try
{
    using (WebClient webclient = new WebClient())
    {
        byte[] rawResponse = webclient.UploadFile(httpUrl, xmlNewFile);
        Console.WriteLine("Remote Response: {0}", System.Text.Encoding.ASCII.GetString(rawResponse));
        Console.ReadLine();
    }
}
catch (Exception ex)
{
    uploadError = true;
}

我的 httpUrl 看起来像 http://www.example.com:1234/upload

问题是我在使用 UploadFile 命令运行该行后立即遇到了第一次机会异常(“System.dll 中发生了“System.Net.WebException”类型的第一次机会异常”)。 我可以用我的浏览器在给定端口上打开给定的 URL,所以连接本身不应该是问题。

任何想法从哪里开始搜索导致错误? 谢谢!

编辑:好的,感谢你们,现在我知道服务器出错了。

System.Net.WebException: The remote server returned an error: (403) Forbidden.
 at System.Net.WebClient.UploadFile(Uri address, String method, String fileName)
 at System.Net.WebClient.UploadFile(String address, String fileName)
 at XML_Export.Program.Main(String[] args) in Program.cs:line 177

有趣的是,我的浏览器显示“200 OK”...嗯。

【问题讨论】:

  • WebException 的消息是什么?如果您查看http://www.example.com/upload,表格是否会发布到另一个位置?
  • 提示:捕获异常而不做任何事情,甚至不记录它,很少是一个好主意。
  • 浏览器中的 httpUrl 给了我一个白页,上面写着“HTTP/1.1 200 OK DATE: 19.09.2014 TIME: 16:32:58 CET”。好的,我将不得不尝试如何记录异常 - 给我一些时间。

标签: c# upload webclient


【解决方案1】:

你必须检查异常被 trown。我一般都是这样登录的

    try
    {
        //some cool stuff with webClient
    }
    catch (WebException ex)
    {
        using (var stream = ex.Response.GetResponseStream())
        using (var reader = new StreamReader(stream))
        {
            var s = reader.ReadToEnd();

            throw new Exception(s, ex);
        }
    }
    catch (Exception e)
    {
        throw e;
    }

【讨论】: