ile PostAsync sonra yerleştirilir HttpClient ile bir dosya göndermeye çalışıyorum ve alıcı tarafında bir şey başarısız olursa aynı dosya akışını yeniden göndermek istiyorum.Nesne HttpClient
Akış içeren MultipartFormDataContent ile bir posta isteği oluşturuyorum. PostAsync'i ilk defa aradığımda her şey iyi görünüyor. Ancak isteği tekrarlamaya çalıştığımda System.ObjectDisposedException alıyorum.
Dosya akışım, PostAsync ilk çağrısından sonra imha edilir ... Neden ve benim sorunumun bir çözümü var mı?
İşte ben neden bahsettiğimin temel bir örneğidir. İçerik nesne üzerinde LoadIntoBufferAsync ararsanız
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();
}
public JsonResult Put(HttpPostedFileBase file)
{
return Json(new JsonResponse { Success = false });
}
StreamContent.CopyToAsync kullanmalı mıyım yoksa streamContent.LoadIntoBufferAsync mi çağırmalıyım? – zarkobehar
CopyToAsync ile yöntem çalışır, ancak sorun, bu akış için bellek kullanımını iki katına çıkaracağım. Sorunun FileStream olduğunu düşünmüyorum. Bir MemoryStream'i içerik parametresi olarak geçmek için aldım ve hala atıyor. LoadIntoBufferAsync'i aradığımda hiçbir şey değişmez ... – zarkobehar