Response.End () vs HttpContext.Current.ApplicationInstance.CompleteRequest () [duplicado]

Esta questão já tem uma resposta aqui:

O Response.End () é considerado prejudicial? 8 respostas

Os usuários do nosso aplicativo baixam um anexo pelo menos uma vez em dois segundos durante o dia.

Cenário Anterior:

Estávamos usando Response.End () para interromper a conexão com o cliente depois que o usuário faz o download de um anexo. Como estávamos com problemas de desempenho, começamos a registrar exceções e uma das mais repetidas foi a exceção de anulação de segmento. Como estamos recebendo o anexo de um serviço da Web, precisamos fazer algumas limpezas e limpamos o bloco try-catch-finally. Depois de alguma pesquisa, eu entendi que qualquer código após Response.End () não será executado mesmo se estiver no bloco finally. Isso esta certo?

Cenário Atual:

Eu li o segmento no estouro de pilha sobre Response.End () sendo prejudicial e ele precisa ser usado somente quando é realmente necessário, então eu decidi usar HttpContext .... CompleteRequest () em vez disso. Com esse código, a limpeza necessária é feita, mas o html processado está sendo anexado ao anexo baixado. Eu tentei substituir o Render e RaisePostBackEvent sugerido no mesmo artigo, mas o problema ainda persiste. Qualquer ideia sobre como resolver esse problema seria útil.

Código:

HttpContext.Current.Response.Clear();

Response.ClearContent();

Response.ClearHeaders();

Response.AddHeader("Content-Disposition", "attachment; filename=" +   
filename);
Response.AddHeader("Content-Length", fileContent.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.BinaryWrite(fileContent);
Response.Flush();

questionAnswers(2)

yourAnswerToTheQuestion