Это продолжение Загрузить файл, но мне кажется, что я должен сделать это через браузер.
Я чувствую, что на вопрос был дан ответ, но мне нужна дополнительная помощь.
Вот мой текущий код:
public async void TryDownload()
{
var clientHandler = new HttpClientHandler
{
AllowAutoRedirect = true,
UseCookies = true,
CookieContainer = new CookieContainer()
};
using (var httpClient = new HttpClient(clientHandler))
{
// this gets the request and allows the site to set cookies.
var warmup = await httpClient.GetAsync("https://www.fapiis.gov/fapiis/allfapiisdata.action"); //This is the last line that runs when I step thru it.
// get the file (cookies are sent automatically).
var fileResponse = httpClient.GetAsync("https://www.fapiis.gov/fapiis/downloadview?type=allFapiis");
if (fileResponse.Result.IsSuccessStatusCode)
{
HttpContent content = fileResponse.Result.Content;
var contentStream = await content.ReadAsStreamAsync();
string fname = "allFapiis" + DateTime.Now.ToLongDateString() + ".xlsx";
using (var fileStream = System.IO.File.Create(@"C:\ERA\DATA\FAPIIS\" + fname))
{
contentStream.CopyTo(fileStream);
}
}
}
}
public void Main()
{
// TODO: Add your code here
TryDownload();
Dts.TaskResult = (int)ScriptResults.Success;
}
Я запускаю это в задаче сценария в SSIS.
Когда я перешагиваю через него, процесс резко заканчивается настройкой «разогрева».
Я вижу, что процесс сработал для ответчика, потому что я вижу, что его вывод соответствует тому, что я загрузил вручную.
Если я попытаюсь включить await
в вызов TryDownload()
из main, он лает о необходимости быть в методе асинхронной задачи, который я не могу сделать, потому что это в main.
Что я здесь делаю неправильно?
Спасибо за вашу помощь!