Missing images from report

  • I've recently installed the developer version of reporting services onto an up to date copy on Win2000 Server SP4.  When I deploy a report to the server it goes on ok, but when viewed in a browser I can't see any images or charts.  If you export the report to a PDF file then the images appear correctly!  They also preview fine in the report builder (VS2003) and I have got the whole setup working at home on Win2003 Server.

    Does anyone have any ideas?  I'm pulling my hair out here!

    Many thanks

  • Are there any ISAPI filters installed on your IIS server? There's a known problem with ISAPI and IIS that manifests itself as either images not being displayed or "Unable to display page" messages. Even more confusing is that some people will have the problem and others won't. Maybe it was fixed in Win2003...

     

  • No ISAPI filters installed on the system, but thanks for the suggestion. 

    It looks like it may be a permissions problem somewhere, but as I said you can render the report as a pdf or even a web archive and the images and charts appear correctly.

    Still confused!

  • I found this on MSDN....

    The report server supports several multi-stream formats that can be used to render a report. These formats include HTML3.2 and HTML4.0. MHTML, PDF, and Excel formats render reports in a single stream. When using the multi-stream formats, the first stream contains the HTML; subsequent streams contain images and other external resources. This error occurs when the report server cannot find a stream that contains images or external resources.

    I think this may be the problem as I am getting the following in the log.

    Info: Microsoft.ReportingServices.Diagnostics.Utilities.StreamNotFoundException: The stream cannot be found. The stream identifier that is provided to an operation cannot be located in the report server database.

    Does anyone know if there is a setting somewhere to allow multiple streams?

  • Ok, I sussed it on my own.  It turns out that you can't use a server name with underscores in it - a known feature it seems.  If anyone else has this problem you can't just change the server name and expect it to work.  You also need to change any references to the old server name in the report server config files (search the directory for files with the old name in).

    I hope this helps someone else as I now have no hair left anywhere!

  • Very good information. Thanks for publishing what you've found. I am experiencing the same problem, and was also losing hair

  • I just fixed the problem of drill downs not working upon deployment on IIS with the same fix....taking out underscores from the server name.  Another MS Feature no doubt.

  • Hi,

    having the same problem. However, my server name didn't have any underscores. Rather, I had an underscore in the folder name that contains my report. I changed it, but it doesn't help. It always throws exception "The stream cannot be found. The stream identifier that is provided to an operation cannot be located in the report server database". on the RenderStream call. If I don't use streamIds and don't make this call, the image isn't returned anyway.

    Here is my code:

    string

    deviceInfo = null

    string encoding = "";

    string mimeType = "";

    ParameterValue[] paramsUsed = new ParameterValue[0];

    Warning[] warnings = new Warning[0];

    string[] streamIds = new string[0];

    ReportingService.ReportingService repSvc = new ReportingService.ReportingService();

    repSvc.Url = "http://2KP16895/ReportServer/ReportService.asmx";

    repSvc.Credentials = System.Net.CredentialCache.DefaultCredentials;

    byte[] data = repSvc.Render("/LBReports/LBCampaignDetails","HTML4.0",

    null,deviceInfo,repParams,null,null,out encoding,out mimeType,

    out paramsUsed,out warnings,out streamIds);

    // For each image stream returned by the call to render,

    // render the stream and save it to the application root

    foreach (string streamID in streamIds)

    {

    string optionalString = "";

    byte[] image = repSvc.RenderStream("/LBReports/LBCampaignDetails", "HTML4.0", streamID,

    null, deviceInfo, null, out optionalString, out optionalString);

    FileStream stream = File.OpenWrite(@"D:\CVS_ROOT\mp\projects\WebUI\" + streamID);

    stream.Write(image, 0, image.Length);

    stream.Close();

    }

    Response.ContentType=mimeType;

    Response.BinaryWrite(data);

    Response.Flush();

    Response.Close();

    Any help will be greatly appreciated!

    Arkadiy

  • Figured this one out by myself - the report parameters must not be null in the RenderStream call.

  • I want to render a report with a chart in a aspx page, I use the same code (found in MSDN) and get the same problem :

    Microsoft.ReportingServices.Diagnostics.Utilities.StreamNotFoundException ....The stream cannot be found

    Could this be due to a bad setting on the report server? My asp.net application and the reporting server are located on the same machine

    Has someone found a solution ?

    Thanks

    Oliver

     

     

  • As I stated earlier, make sure the RenderStream method receives the same parameter array as the Render method.

  • My problem is that I do not have the original ReportService object available to me. The part that renders the image is running in a different context or perhaps on a completely different server. I recreate the ReportService object with all of the same parameters, but it does not work.

    If I call line 1 then line 2 will work, but this is a waste since line 1 is just creating the same report. I should be able to call line 2 without calling line 1 first.

    There has to be some property that is set on rs from line 1, that I am not setting. Anyway, does anyone have a solution? I would rather not save these images to disk as I think the report server is already handling the images. I just want to proxy between them.

    // line 1

    result = rs.Render(reportPath, "HTML4.0", null,"/WebApplication1/",null, null, null, out optionalString, out optionalString, out optionalParams,out optionalWarnings, out streamIDs);*/

    // line 2

    byte[] image = rs.RenderStream(reportPath, "HTML4.0", streamId, null, deviceInfo, parameters, out optionalString, out optionalString);

  • I'm getting similar behaviour.  on my dev server, all is well, when I point at production, all is NOT well.

    Error recieved reads:

    The stream cannot be found. The stream identifier that is provided to an operation cannot be located in the report server database. --> The stream cannot be found. The stream identifier that is provided to an operation cannot be located in the report server database.

  • I ended up writing the files to a central directory and then deleting them once they are viewed.  It's working pretty well so far, but I'm hoping that the next release of SQL Server Reporting will fix a lot of these workarounds I have had to apply.

Viewing 14 posts - 1 through 13 (of 13 total)

You must be logged in to reply to this topic. Login to reply