C# 发送StringContent&;同一发布到服务器中的StreamContent
我想将字符串参数和文件发送到Web服务器。我对streamContent有一个错误 这是我的密码C# 发送StringContent&;同一发布到服务器中的StreamContent,c#,filestream,pushstreamcontent,C#,Filestream,Pushstreamcontent,我想将字符串参数和文件发送到Web服务器。我对streamContent有一个错误 这是我的密码 using (var client = new HttpClient()) { using (var content = new MultipartFormDataContent()) { content.Add(new StringContent("loginTest"), "login"); content.Add(new StringContent("toto"), "us
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
将fileStream作为参数传递给StreamContent的构造函数时,它将获得所有权。也就是说,在处理filestreamContent时,它还将处理fileStream。将filestreamContent添加到内容时,它还拥有所有权,即在处理内容时,它将循环遍历所有部分,然后再处理这些部分 HttpClient.PostAsync最终将调用私有函数HttpClient.DisposeRequestContent,该函数依次处理内容,然后关闭并处理所有相关流。这是故意的 您只看到了最终结果,据我所知,您没有得到任何错误或异常,除了在尝试访问调试器中现在已处理的对象的成员时