7

Sto usando ReportViewer 10.0. In Google Chrome, le linee hanno un'immagine spezzata chiamata blank.gif. Ma IE e Firefox stanno funzionando bene.ReportViewer che mostra immagini danneggiate in Chrome

Ecco un esempio con le immagini cerchiata:

Screnshot

Tutte le idee su come risolvere questo problema?

+0

C'è [una domanda separata per IE11] (http: // StackOverflow. it/q/21993721/419956) con la stessa causa principale ma con sintomi completamente diversi (IE11 si blocca solo). – Jeroen

risposta

2

La soluzione corrente nasconderà il problema, ma non affronterà il problema sottostante, ovvero quando i browser oltre a IE stanno componendo la richiesta per il gif (che SSRS usa solo per sostituire il padding), non sanno per includere il parametro stringa di query IterationId.

Come SQL Reporting Services Viewer broken in Non-IE Browsers sottolinea, se si sta utilizzando il ReportViewer, è possibile risolvere questo problema nel vostro percorso domanda ai sensi Application_BeginRequest come questo:

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    // Original fix credit to Stefan Mohr 
    // Bug fix for MS SSRS Blank.gif 500 server error missing parameter IterationId 
    // https://connect.microsoft.com/VisualStudio/feedback/details/556989/ 
    HttpRequest req = HttpContext.Current.Request; 
    if (req.Url.PathAndQuery.StartsWith("/Reserved.ReportViewerWebControl.axd") && 
     !req.Url.ToString().ToLower().Contains("iteration") && 
     !String.IsNullOrEmpty(req.QueryString["ResourceStreamID"]) && 
     req.QueryString["ResourceStreamID"].ToLower().Equals("blank.gif")) 
    { 
     Context.RewritePath(String.Concat(req.Url.PathAndQuery, "&IterationId=0")); 
    } 
} 
+0

È possibile evitare il colpo di prestazioni di 'ToLower()' utilizzando 'IndexOf': ' req.Url.ToString(). IndexOf ("IterationId" , StringComparison.OrdinalIgnoreCase) <0' 'ToLower()' crea una nuova stringa quando viene chiamata. –

+0

@ D-Money, la leggibilità supera le micro ottimizzazioni - * sempre *. Detto questo, puoi fare un confronto senza distinzione tra maiuscole e minuscole senza dover utilizzare l'indice usando [String.Equals (a, b, StringComparison.OrdinalIgnoreCase) '] (https://msdn.microsoft.com/en-us/library/t4411bks.aspx) – KyleMit

+0

Concordo sull'ottimizzazione prematura. Ho pensato che valesse la pena un commento poiché questo codice viene eseguito su ogni richiesta. Inoltre, il mio codice sostituisce il codice Contains, non il codice Equals. –

0

Nel mio caso la sua risposta non funziona in modalità test (localhost) , ma ho corretto e ora funziona, invece di mettere "StartsWith" inserisco "Contains". E 'il codice:

Protected Sub Application_BeginRequest(sender As Object, e As EventArgs) 
     ' Original fix credit to Stefan Mohr 
     ' Bug fix for MS SSRS Blank.gif 500 server error missing parameter IterationId 
     ' https://connect.microsoft.com/VisualStudio/feedback/details/556989/ 
     Dim req As HttpRequest = HttpContext.Current.Request 
     If req.Url.PathAndQuery.Contains("/Reserved.ReportViewerWebControl.axd") AndAlso Not req.Url.ToString().ToLower().Contains("iteration") AndAlso Not [String].IsNullOrEmpty(req.QueryString("ResourceStreamID")) AndAlso req.QueryString("ResourceStreamID").ToLower().Equals("blank.gif") Then 
      Context.RewritePath([String].Concat(req.Url.PathAndQuery, "&IterationId=0")) 
     End If 
    End Sub 

Speranza aiutate,

+0

è necessario inserire questo codice in Global.asax (in asp.net - VB) o in Global.asax.cs in C# – SohamHck

0

Soluzione: utilizzare rettangoli/caselle di testo/celle Tablix e hanno solo uno dei loro confini che mostrano. Funziona su Chrome. Per l'OP, può aggiungere colonne aggiuntive come distanziatori tra le colonne di dati e saltare il bordo per quelle.

0

Come le altre risposte, ho risolto questo problema aggiungendo il seguente codice al mio file Global.asax:

void Application_BeginRequest(object sender, EventArgs e) 
{ 
    //The following code is a hack for stopping a broken image from magically appearing on SSRS reports in chrome 
    //where ever a line is used in the report. 
    Uri u = HttpContext.Current.Request.Url; 

    //If the request is from a Chrome browser 
    //AND a report is being generated 
    //AND there is no QSP entry named "IterationId" 
    if (HttpContext.Current.Request.Browser.Browser.ToLower().Contains("chrome") && 
    u.AbsolutePath.ToLower().Contains("reserved.reportviewerwebcontrol.axd") && 
    !u.Query.ToLower().Contains("iterationid")) 
     HttpContext.Current.RewritePath(u.PathAndQuery + "&IterationId=0"); 
} 

Ma, forse si era perso o non hanno il file Global.asax, come è accaduto per me. Quindi, selezionare la soluzione e andare a:

File > New > File > Web > C#/VB.Net > Global Application Class 

Salva come Global.asax, incolla il codice e sarà risolvere il tuo problema.

0

ho avuto lo stesso errore con Reportviewer versione 10 in modo da aggiornare alla versione 14, è risolvere il problema e ottenere alcuni miglioramenti, guida compelte here