2010-10-26 1 views
0

Я пытаюсь использовать метод ServerReport.RenderStream из ASP.NET ReportViewer (2008 SP1), но я получаю исключение rsStreamNotFound из метода. После настройки параметров я пробовал две разные строки кода ниже. Я взаимодействую с SQL Server 2005 и SSRS 2005. Я видел статьи об исправлении для этой проблемы, но я бы действительно не прибегал к исправлению, так как я не уверен, что с ним все будет в порядке. в. Существует не так много документации, что я нашел на ошибку, которая являетсяASP.NET ReportViewer Server Report Render Stream приводит к исключению

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

Prep Код:

string mimeType; 
string encoding; 
List<ReportParameter> parameters = new List<ReportParameter>(); 
string startDateValue = Request.Form[startDate.UniqueID]; 

string endDateValue = Request.Form[endDate.UniqueID]; 
parameters.Add(new ReportParameter("Owner", "5", false)); 
parameters.Add(new ReportParameter("StartDate", startDateValue, false)); 
parameters.Add(new ReportParameter("EndDate", endDateValue, false)); 
ReportViewer1.ServerReport.SetParameters(parameters); 

Вызов 1:

byte[] result = ReportViewer1.ServerReport.RenderStream("PDF", string.Empty, string.Empty, out mimeType, out encoding); 

Вызов 2:

byte[] result = ReportViewer1.ServerReport.RenderStream("CSV", string.Empty, string.Empty, out mimeType, out encoding); 

Очистка:

Response.Clear(); 
Response.ContentType = mimeType; 
Response.ContentEncoding = System.Text.Encoding.GetEncoding(encoding); 
Response.OutputStream.Write(result, 0, result.Length); 

Любые мысли о решении? Конечная цель - записать это в CSV для загрузки. На самом деле я был бы доволен XML, который я бы перевел на базу данных CSV.report.

+0

я смог обойти эту проблему, используя вместо ServerReport.Render RenderStream. Я не знаю, что и почему проблема представила, но Рендер достиг своей цели. – CodeMonkey1313

ответ

0

Да, метод Render делает именно то, что я хочу. Мне бы хотелось услышать от кого-то, у кого есть опыт работы с RenderStream.

2

RenderStream Используется для передачи существующего потока и обработки его другим способом или визуализации внешних ресурсов, поэтому Render был тем, что вам было нужно. C# подпись RenderStream является

public byte[] RenderStream (
    string format, 
    string streamId, //cannot be String.Empty! 
    string deviceInfo, 
    out string mimeType, 
    out string encoding 
) 

Второй параметр, streamId, это идентификатор существующего потока; вы проходили String.Empty, поэтому сообщение об ошибке не обнаружило идентификатор. Вы можете получить StreamID (ы) с out string[] streams от одного из Render() methods:

public override byte[] Render (
    string format, 
    string deviceInfo, 
    out string mimeType, 
    out string encoding, 
    out string fileNameExtension, 
    out string[] streams, //"The stream identifiers. You can use them to render external resources (images, for example) that are associated with the report." 
    out Warning[] warnings 
) 

This question дело больше с помощью визуализации и RenderStream.

(Я понимаю, что этот вопрос является годом, но я думал, что после того, что я нашел для кого-то, кто натыкается на него.)

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

  • Нет связанных вопросов^_^