ReportViewer показывает сломанные изображения в Chrome

Я использую ReportViewer 10.0. В Google Chrome линии поставляются с разбитым изображением под названием blank.gif. Но IE и Firefox работают нормально.

вот пример с обведенными изображениями:

Screnshot

есть идеи о том, как это исправить?

6 ответов


просто добавьте следующий CSS из SQL Reporting Services-просмотрщик сломан в браузерах, отличных от IE:

body:nth-of-type(1) img[src*="Blank.gif"]{
    display:none;
}

текущее решение замаскирует проблему, но не будет решать основную проблему, которая заключается в том, что, когда браузеры, кроме IE, составляют запрос на gif (который SSRS просто использует для замены заполнения), они не знают, чтобы включить IterationId параметр строки запроса.

As SQL Reporting Services Viewer сломан в браузерах, отличных от IE указывает, если вы используете ReportViewer, вы можете исправить это в маршрутизации приложения в разделе Application_BeginRequest как это:

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

в моем случае его ответ не работает в тестовом режиме (Localhost), но я исправил и теперь он работает, вместо того, чтобы ставить "StartsWith" я ставлю "Contains". Это код:

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

надеюсь, вы поможете,


обходной путь: используйте прямоугольники / текстовые поля / ячейки табликса и показывать только одну из их границ. Работает на Chrome. Для OP он может добавить дополнительные столбцы в качестве прокладок между столбцами данных и пропустить показ границы для них.


Как и другие ответы, я решил эту проблему, добавив следующий код в моей мировом.файл 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");
}

но, может быть, вы пропустили или не быть глобальной.файл asax, как это случилось со мной. Поэтому выберите решение и перейдите по ссылке:

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

сохраните его как глобальный.asax, вставьте код, и это решит вашу проблему.


У меня была такая же ошибка с Reportviewer версии 10, поэтому я обновляю до версии 14, он решает проблему и получает некоторые улучшения, compelte guide здесь