我想将字符串参数和文件发送到Web服务器。我在streamContent上有错误 这是我的代码
using (var client = new HttpClient())
{
using (var content = new MultipartFormDataContent())
{
content.Add(new StringContent("loginTest"), "login");
content.Add(new StringContent("toto"), "username");
using (fileStream = new FileStream("C:\\test.pdf", FileMode.Open,
FileAccess.Read, FileShare.Read, 4096, useAsync: true))
{
var filestreamContent = new StreamContent(fileStream, 4096);
content.Add(filestreamContent, "documentUpload", "test.pdf");
using (var message = client.PostAsync("http://serverUrl/Create?
method=init", content))
{
var input = message.Result.Content.ReadAsStringAsync().Result;
}
}
}
}
,这是一个带错误的屏幕截图:System.ObjectDisposedException https://i.imgur.com/IHspYbB.jpg
答案 0 :(得分:0)
当将fileStream作为参数传递给StreamContent的构造方法时,它将拥有所有权。即处置filestreamContent时,还将处置fileStream。在将filestreamContent添加到内容时,它也拥有所有权,即,在处理内容时,它将遍历所有部分,然后也进行处理。
并且HttpClient.PostAsync最后将调用私有函数HttpClient.DisposeRequestContent,该函数依次处理内容,这将关闭并处理所有关联的流。这是设计使然。
您只是看到最终结果,据我所知,除了尝试访问调试器中已放置的对象的成员之外,您没有任何错误或异常。