Я пытался использовать загрузку файла из моего углового приложения 6, вызывая метод API GetFile (), написанный с использованием NancyFx.
Метод API GetFile () снова вызывает метод веб-API GetRemoteFile () с использованием RestSharp.
Метод GetFile () следует шаблону асинхронности / ожидания. Но я вижу, что файл загружается еще до того, как будет вызван успешный обратный вызов GetRemoteFile ().
И из-за этого загруженный файл имеет размер 0 байт.
using RestSharp.Extensions.MonoHttp;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using System.Linq;
using Nancy.Json;
using RestSharp.Extensions;
using System.Net;
using Nancy;
using Nancy.Responses;
using RestSharp;
private async Task<Nancy.Response> GetFile(int orderId)
{
var request = new RestRequest($"api/GetRemoteFile", Method.POST);
string json = SomeBodyData();
request.AddJsonBody(new RemoteParameter
{
OId = documentId,
Json = json
});
var taskCompletionSource = new TaskCompletionSource<IResponse>();
client.BaseUrl = new Uri("http://someremoteapi.com/orders/");
var res = client.PostAsync(request, (response,handle) =>
{
taskCompletionSource.SetResult(response);
});
var data = await taskCompletionSource.Task;
var stream = new MemoryStream(data.RawBytes);
stream.Position = 0;
var file= new StreamResponse(() => stream, "text/csv");
return file;
}