我正在尝试使用HttpClient发送文件,如果接收端的某些内容失败,我想重新发送相同的文件流.
我正在使用包含流的MultipartFormDataContent创建一个post请求.当我第一次调用PostAsync时,一切看起来都很好.但是当我尝试重复请求时,我得到System.ObjectDisposedException.
我的文件流在PostAsync的第一次调用之后被处理...为什么并且我的问题是否有解决方案?
这是我在说什么的基本例子.
public ActionResult Index()
{
var client = new HttpClient { BaseAddress = new Uri(Request.Url.AbsoluteUri) };
var fi = new FileInfo(@"c:\json.zip");
using (var stream = fi.OpenRead())
{
var content = new MultipartFormDataContent();
var streamContent = new StreamContent(stream);
streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
FileName = "\"File\""
};
content.Add(streamContent);
var isSuccess = client.PostAsync("Home/Put", content).
ContinueWith(x => x.Result.Content.ReadAsAsync<JsonResponse>().Result.Success).Result;
//stream is already disposed
if (!isSuccess)
{
isSuccess = client.PostAsync("Home/Put", content).
ContinueWith(x => x.Result.Content.ReadAsAsync<JsonResponse>().Result.Success).Result;
}
}
return View(); …Run Code Online (Sandbox Code Playgroud)