Я пытаюсь загрузить CSV-файл приложения ASP.NET из ответа службы. Ответ службы содержит содержимое файла в кодировке base64. Я пытаюсь загрузить как текстовый файл (без разбора) - поэтому установите тип MIME как текстовый/обычный. Имя файла.csv Получение сообщения об ошибке:
Сообщение: сообщение, полученное от сервера, не может быть проанализировано. Распространенными причинами этой ошибки являются изменения ответа вызовами Response.Write(), фильтрами ответа, HttpModules или включенной трассировкой сервера. Подробности: Ошибка синтаксического анализа
Есть ли неправильные значения, переданные для сохранения файла? Означает ли это, что расширение *.csv и приводит к синтаксическому анализу? заранее спасибо
Вот код для сохранения файла:
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.AddHeader("Content-Length", contentBytes.Length.ToString());
HttpContext.Current.Response.ContentType = contentType; //passed "text/plain"
HttpContext.Current.Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.BufferOutput = true;
HttpContext.Current.Response.BinaryWrite(contentBytes);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
HttpContext.Current.Response.SuppressContent = true;
HttpContext.Current.ApplicationInstance.CompleteRequest();
```
Решение проблемы
HttpContext.Current.Response.BinaryWrite(contentBytes);
Я думаю, вам нужно сделать Write, а не BinaryWrite:
HttpContext.Current.Response.Write(stringBuilderOrStringNotBinary.ToString());
CSV не является двоичным, и я считаю, что лучше всего указать правильный тип MIME:
HttpContext.Current.Response.ContentType = "text/csv";
Или используйте правильный тип MIME (и расширение) для кодировки base64.
Комментариев нет:
Отправить комментарий