2015-11-24 3 views
0

Итак, я пытаюсь передать файл клиенту. После некоторых других SO ответы, я в настоящее время есть следующий код (С.Б. является StringBuilder):Прикрепленный файл содержит содержимое страницы

HttpContext.Current.Response.Clear(); 
HttpContext.Current.Response.ClearHeaders(); 
HttpContext.Current.Response.ClearContent(); 

HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=export.csv"); 
HttpContext.Current.Response.ContentType = "text/csv"; 

HttpContext.Current.Response.Write(sb.ToString()); 

Однако, мой вопрос заключается в том, что я получаю expeted результат, а затем исходный код страницы, которая содержит мою кнопку добавляется к файлу.

ответ

1

Вы должны добавить

Response.End(); 

после кода. если нет, Asp.Net будет продолжать обрабатывать страницу, что может привести к тому, что с вами происходит.

+0

Я должен ждать 10-15 минут, прежде чем принимать ответ. Я также пытаюсь понять, имеет ли значение разница между двумя ответами. –

1
string attachment = string.Empty; 
HttpResponse Response = HttpContext.Current.Response; 
Response.Clear(); 
Response.ClearHeaders(); 
Response.ClearContent(); 
Response.AddHeader("content-disposition", "attachment; filename=export.csv"); 
Response.ContentType = "text/csv"; 
Response.Write(sb.ToString()); 
Response.End(); 
+0

Есть ли какая-нибудь причина для выполнения 'HttpResponse Response = HttpContext.Current.Response'? Я имею в виду, за исключением того, что мне было легче работать. –

+0

Если вы находитесь на своей странице, 'this.Response' совпадает с' HttpContext.Current.Response'. если вы, например, в классе-помощнике ... –

+0

'HttpContext, инкапсулирует всю HTTP-специфическую информацию об отдельном HTTP-запросе'. вы можете сделать некоторые чтения в MSDN для «HttpContext.Current» – MethodMan

Смежные вопросы