c#HttpClient.PostAsync只能工作一次

时间:2018-01-12 14:52:40

标签: c# .net post upload httpclient

我在Windows客户端上工作,通过http post请求上传大量小文件。 我正在使用.NET 4.5.2

public async void Upload3(HttpClient client, string url, string[] files)
{
    foreach (var file in files)
    {
        using (var stream = new FileStream(file, FileMode.Open))
        {
            FileInfo info = new FileInfo(file);
            HttpContent fileStreamContent = new StreamContent(stream);
            using (var content = new MultipartFormDataContent())
            {
                content.Add(fileStreamContent);
                var response = await client.PostAsync(url, content);
                response.EnsureSuccessStatusCode();
                //code is stopping at the following line:
                string finalresults = await response.Content.ReadAsStringAsync();
                Console.WriteLine(finalresults);
                Console.WriteLine(" > Uploaded file " + info.Name);
            }
            stream.Close();
        }
    }
    Console.WriteLine("> Uploaded all files");
}

该代码适用于第一个文件。但是没有上传其他所有文件。当我尝试逐步调试代码时,代码执行在此行停止(在循环的第二次迭代中):

string finalresults = await response.Content.ReadAsStringAsync();

由于服务器日志仅在单个请求中显示,我认为该行中已经出现错误:

var response = await client.PostAsync(url, content);

即使我使用不同的HttpClient对象和不同的FileStream对象,上传仅适用于第一个文件。 这段代码有什么问题?

1 个答案:

答案 0 :(得分:0)

为了您的需要,您可以使用RESTSharp等第三方库。有很多例子和良好的文档。它也很容易使用。