открытие вложения в <ASP: UpdatePanel выдает эту ошибку - PullRequest
1 голос
/ 21 августа 2010

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

'. *

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

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();
    }
}

Ответы [ 2 ]

2 голосов
/ 21 августа 2010

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

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

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

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

Существует несколько способов решения этой проблемы, каждое из которых имеет определенные области действия.

1.Регистрация ButtonDownload элемента управления PostBackTrigger в дочернем теге Triggers панели обновления, как показано ниже.

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

0 голосов
/ 21 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...