Bir win form uygulamasında WebApi2 ve HttpClient kullanarak bir test uygulaması hazırlıyorum.Web Api 2 ByteArrayContent, HTTPClient'e dönülmez
HttpClient isteğimin bir HttpResponseMessage döndüren bir WebApi2 denetleyicisine ByteArrayContent döndürmediği bir sorun karşısında karşılaştım. WebApiController Kod
[HttpGet]
public HttpResponseMessage DownloadFilePart(string fileName)
{
var path = Server.MapPath("~/App_Data/uploads/" + fileName);
var fileArray = System.IO.File.ReadAllBytes(path);
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ByteArrayContent(fileArray)
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue(System.Web.MimeMapping.GetMimeMapping(fileName));
response.Content.Headers.ContentLength = fileArray.Length;
response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
{
FileName = fileName
};
return response;
}
WinForms Kod kullanarak HttpClient
static async void GetFilePart(string hostrUri)
{
var httpClient = new HttpClient
{
BaseAddress = new Uri(hostrUri)
};
var request = new HttpRequestMessage(HttpMethod.Get, "/Home/DownloadFilePart/?fileName=Test.txt");
var responseMessage = httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
var memoryStream = new MemoryStream();
var stream = await responseMessage.Result.Content.ReadAsByteArrayAsync();
var fileToWriteTo = System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\Temp\\Test.txt";
using (var fileStream = new FileStream(fileToWriteTo, FileMode.Create, FileAccess.Write, FileShare.None))
{
//copy the content from response to filestream
fileStream.Write(stream, 0, stream.Length);
}
}
istek WebAPI dönüş ve ben WebAPI yanıtından gerçek başlıkları olan dosyaya yazılır tüm bu dosyaya bayt yazdığınızda . Sorunun burada olabileceği konusunda herhangi bir fikri olan var mı?
Teşekkür
İlk öneri olarak değiştirin '.Sonraki 'daha sonra engelleme (potansiyel olarak kilitlenmeye neden olan) bir çağrıdır. –
Bir tarayıcıdan API uç noktasına gidebilir ve doğru dosya içeriğini indirebilir misiniz? Bu, sorunun Web API koduyla mı yoksa WinForms kodunda mı olduğunu size söylemelidir. Bir bakışta problemi tespit etmiyorum. –