Как не прервать http ответ c #
Мне нужно запустить несколько методов после отправки файла пользователю для загрузки. Происходит следующее: после отправки файла пользователю ответ прерывается, и я больше не могу ничего делать послеresponse.end()
.
например, это мой пример кода:
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=test.pdf");
Response.ContentType = "application/pdf";
byte[] a = System.Text.Encoding.UTF8.GetBytes("test");
Response.BinaryWrite(a);
Response.End();
StartNextMethod();
Response.Redirect(URL);
Итак, в этом примереStartNextMethod
а такжеResponse.Redirect
не выполняются.
Я попытался создать отдельный обработчик (ashx) со следующим кодом:
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.AddHeader("content-disposition", "attachment; filename=test.pdf");
context.Response.ContentType = "application/pdf";
byte[] a = System.Text.Encoding.UTF8.GetBytes("test");
context.Response.BinaryWrite(a);
context.Response.End();
}
и назовите это так:
Download d = new Download();
d.ProcessRequest(HttpContext.Current);
StartNextMethod();
Response.Redirect(URL);
но такая же ошибка случается. Я попытался заменить Response.End на CompleteRequest, но это не помогло.
Я предполагаю, что проблема в том, что я использую HttpContext.Current, но должен использовать отдельный поток ответов. Это верно? как это сделать в отдельном методе (Предположим, что я хочу, чтобы мой обработчик принимал байтовый массив данных и тип содержимого и был загружаемым из отдельного ответа. Я действительно не хочу использовать отдельную страницу для ответа.
UPDATE
Я до сих пор не нашел хорошего решения. Я хотел бы выполнить некоторые действия после того, как пользователь загрузил файл, но без использования отдельной страницы для ответа / запроса.