Как не прервать 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
Я до сих пор не нашел хорошего решения. Я хотел бы выполнить некоторые действия после того, как пользователь загрузил файл, но без использования отдельной страницы для ответа / запроса.

Ответы на вопрос(8)

Ваш ответ на вопрос