Моя проблема: когда пользователь нажимает кнопку изображения на странице aspx, codebehind создает zip-файл, а затем я пытаюсь передать этот zip-файл пользователю.Как вы делаете поток zip-файла одним нажатием кнопки изображения в asp.net?
Для воспроизведения файла я использую следующий код:
FileInfo toDownload = new FileInfo(fullFileName);
if (toDownload.Exists)
{
Response.Clear();
Response.ContentType = "application/zip";
Response.AppendHeader("Content-Disposition", "attachment;filename=" +
toDownload.Name);
Response.AppendHeader("Content-Length", toDownload.Length.ToString());
Response.TransmitFile(fullFileName);
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
Когда я пытаюсь выполнить это я получаю следующее сообщение об ошибке на странице:
Sys.WebForms.PageRequestManagerParserErrorException: Сообщение, полученное с сервера, не может быть проанализировано. Общими причинами этой ошибки являются изменение ответа на вызовы Response.Write(), фильтры ответов, HttpModules или трассировка сервера. Подробнее: Ошибка разбора возле «PK ...».
PK - первые два символа в zip-файле, которые идентифицируют его как zip-файл, поэтому я знаю, что он пытается отправить zip-файл в браузер. Тем не менее, создается впечатление, что браузер пытается интерпретировать и/или отображать zip-файл, пока я хочу, чтобы он отображал параметр файла загрузки.
Идеи?
EDIT: Here's a link to a post from the guy who wrote the above error message.
Какой код работает до этого? Как правило, это происходит потому, что вы уже отправили заголовки браузера. –