при открытии вложения в

* Ошибка времени выполнения Microsoft JScript: Sys.WebForms.PageRequestManagerParserErrorException: Сообщение, полученное от сервера, не может быть разобрано. Обычно эта ошибка возникает, когда ответ модифицирован вызовом Response.Write(), фильтрами ответа, HttpModules или включена трассировка сервера. Подробности: Ошибка разбора возле '�PNG

'.*

если я удалю , то все работает нормально

protected void gvFiles_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Download")
    {
        byte[] byteArray = item.AttachContent.ToArray();
        Response.Clear();
        Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + item.AttachFileName + "\"");
        Response.AppendHeader("Content-Length", byteArray.Length.ToString());
        Response.ContentType = "application/octet-stream";
        Response.BinaryWrite(byteArray);
        Response.End();
    }
}
1
задан Andrea 15 October 2013 в 16:21
поделиться

2 ответа

Это происходит из-за того, что вы пытаетесь выполнить Response.BinaryWrite .

Эта ошибка возникает из-за того, что вы пытаетесь вернуть не HTML в UpdatePanel , используя недопустимый асинхронный обратный вызов. Единственное, что я могу предложить, - это попробовать использовать PostBackTrigger и настроить таргетинг на элемент управления за пределами вашей UpdatePanel .

Лучшим решением было бы заставить кнопку загрузки вызывать другое окно, которое вызывает .ashx (общий обработчик) и передает двоичный файл через ashx. Вы можете просто прикрепить функцию javascript для обработки щелчка, который откроет новое окно в ashx с любыми переданными параметрами.

Эта ссылка содержит дополнительную информацию о конкретной проблеме и способах ее решения.

Есть несколько способов исправить это проблема для каждого исправления есть определенные области применения.

1. Кнопка «Зарегистрироваться» Загрузить элемент управления PostBackTrigger в триггерах дочерний тег панели обновлений, как показано ниже.

2. Вы также можете использовать метод RegisterPostBackControl объекта Элемент управления ScriptManager в Page_Load как показано ниже.

2
ответ дан 2 September 2019 в 21:57
поделиться

Как описывает ошибка, Response.BinaryWrite входит в список действий в черном списке во время асинхронного обратного вызова. Это связано с особой обработкой UpdatePanel содержимого, возвращаемого во время его асинхронного обратного вызова.

Я бы рекомендовал переместить логику загрузки вложений на отдельную страницу, в обработчик HTTP или службу, разрешить доступ к ней с помощью GET (путем управления параметрами в строке запроса) и изменить элемент в gvFiles. из чего бы то ни было (Button, ListButton, ImageButton и т. Д.) В гиперссылку на новый ресурс. Скачав GET с отдельного ресурса, вы избежите ошибки.

0
ответ дан 2 September 2019 в 21:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: