MVC 2 и средство просмотра отчетов с SSRS 2005 - белая страница, без ошибок - PullRequest
1 голос
/ 16 ноября 2010

У меня проблема с моим просмотрщиком отчетов, где ничего не видно, даже элемент управления.Если я добавляю другой контент, он отображается, а отчет - нет.Я использую версию 9.0.0.0 элемента управления с SSRS 2005 внутри приложения MVC 2.0.Я построил и развернул отчет на сервере.Я подтвердил, посмотрев на сервер отчетов и запустив его там.

  1. Мое приложение - MVC 2.0
  2. Я добавил обычную страницу веб-форм в корень сайта.Я поместил его в форму, runat = server и включил viewstate
  3. Я добавил исключение маршрутизации .aspx
  4. Мой код настроен аналогично каждому примеру, который я могу найти
  5. Мой webconfig настроен (возможно, именно в этом моя проблема)
  6. Я настроил ручной тест, введя правильные значения, и получил ту же пустую страницу.
  7. У меня естьссылка на версии 9.0.0.0 для Microsoft.ReportViewer.WebForms и Microsoft.ReportViewer.Common, и, как вы можете видеть, мой web.config соответствует моим ссылкам.

Страница выглядит белой - элемент управлениявидимый.Ошибки не выбрасываются.Насколько я помню, на странице должен быть хотя бы пустой элемент управления Reportviewer, но там вообще ничего нет.

Несколько других странностей - если я удалю настройку параметра, ошибок не возникнет.Я также добавил код для отправки учетных данных, но он не работал даже при отправке учетных данных для учетной записи администратора.

Report.aspx

<%@ Page Language="C#" AutoEventWireup="true" ViewStateMode="Enabled" CodeBehind="Report.aspx.cs" Inherits="MySite.Web.Report" %>

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<html>
<body>
<form id="form1" runat="server">
<rsweb:ReportViewer ID="reportViewer" EnableViewState="True" runat="server" />
</form>
</body>
</html>

Исключения маршрутизации

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");

Код за

protected void Page_Load(object sender, EventArgs e)
{
    var qs = ReportQueryString.Parse(Request.QueryString["R"]);

    reportViewer.ServerReport.ReportServerUrl = ConfigurationHelper.Reports.ReportServerUrl;
    reportViewer.ServerReport.ReportPath = String.Format(ConfigurationHelper.Reports.ReportPath, qs.ReportName);

    var result = from p in qs.Parameters
                    select new ReportParameter(p.Key, p.Value);

    reportViewer.ServerReport.SetParameters(result);
    reportViewer.ServerReport.Refresh();
}

Web.config

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
    <add assembly="Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
  </assemblies>
    <buildProviders>
        <add type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" extension=".rdl" />
    </buildProviders>
</compilation>

  <pages>
      <namespaces>
          <add namespace="Microsoft.Web.Mvc" />
          <add namespace="System.Web.Mvc" />
          <add namespace="System.Web.Mvc.Ajax" />
          <add namespace="System.Web.Mvc.Html" />
          <add namespace="System.Web.Routing" />
          <add namespace="System.Drawing" />
      </namespaces>
  </pages>

  <httpHandlers>
      <add type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" path="Reserved.ReportViewerWebControl.axd" verb="*" />
  </httpHandlers>

РЕДАКТИРОВАТЬ:

По запросу, вот источник страницы.Кстати, я использую Chrome, но я попробовал IE с тем же результатом.

<html>

<body>

<form method="post" action="Report.aspx?R=rYeJ28xc7emx1PJPgiRkOi1lXjmmNE6pF7aJrEJ443w*" id="form1">

<div class="aspNetHidden">

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE0NzMwNTUwMTgPZBYCAgEPZBYCAgEPFCsABA8WAh4OUmVuZGVyaW5nU3RhdGULKZUBTWljcm9zb2Z0LlJlcG9ydGluZy5XZWJGb3Jtcy5SZXBvcnRSZW5kZXJpbmdTdGF0ZSwgTWljcm9zb2Z0LlJlcG9ydFZpZXdlci5XZWJGb3JtcywgVmVyc2lvbj05LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2ECZCgpWFN5c3RlbS5HdWlkLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkkOTQ5NWQxOTEtMmVmMy00OTJlLTk1ZTgtMzRhZDBkYWI4ZGM4AgEUKwABFCsAAgIBZBYKZg8PFgIeB1Zpc2libGVoZGQCAQ8PFgIfAWhkFgICCA8PFgIfAWhkZAIGDxYCHgVWYWx1ZQUBMGQCBw8WAh8CBQVmYWxzZWQCCA8WAh8CBQVmYWxzZWRkvlE8tEXOwYRIWVLykp+GFwUxbrW+MAtpUdojqbM994U=" />

</div>





<script src="/Reserved.ReportViewerWebControl.axd?OpType=Resource&amp;Version=9.0.30729.4402&amp;Name=Microsoft.Reporting.WebForms.Scripts.ReportViewer.js" type="text/javascript"></script>

<div class="aspNetHidden">



    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />

    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />

    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBgLgrv+UCwL8sqiiBgL8sqyiBgL8srCiBgL8srSiBgL8stiiBkbkdSlUJxfVD65mS2OQpfO01z367cPQhXOdmZguuzmc" />

</div>

<div id="reportViewer" style="display:inline-block;height:400px;width:100%;">

    <Script language="javascript"><!--


if (document.getElementById('reportViewer') != null)

{

    document.getElementById('reportViewer').ClientController = new RSClientController("reportViewer_ctl03", "ReportFramereportViewer", "/Reserved.ReportViewerWebControl.axd?Mode=true&ReportID=b003c2a678b44c71b949617a693d4f8c&ControlID=9495d1912ef3492e95e834ad0dab8dc8&Culture=1033&UICulture=1033&ReportStack=1&OpType=DocMapArea&Controller=reportViewer&RootLabel=&BackColor=%23ECE9D8&Border=1px+Black+Solid&Font=font-family%3aVerdana%3bfont-size%3a8pt%3b", "25%", false, "/Reserved.ReportViewerWebControl.axd?Mode=true&ReportID=2558c6ccaa09444ea46bd3062bc553dd&ControlID=9495d1912ef3492e95e834ad0dab8dc8&Culture=1033&UICulture=1033&ReportStack=1&OpType=ReportArea&Controller=reportViewer&LinkTarget=_top", true, true, true, true, true, true, "reportViewer_ctl06", false, "\/Reserved.ReportViewerWebControl.axd?Mode=true&ReportID=66fb690f271c48d59bc881cd0f07421d&ControlID=9495d1912ef3492e95e834ad0dab8dc8&Culture=1033&UICulture=1033&ReportStack=1&OpType=Export&FileName=&ContentDisposition=OnlyHtmlInline&Format=", "PrintFramereportViewer", "\/Reserved.ReportViewerWebControl.axd?Mode=true&ReportID=c1c1698c78c7476b8a04e03424d3a36c&ControlID=9495d1912ef3492e95e834ad0dab8dc8&Culture=1033&UICulture=1033&ReportStack=1&OpType=PrintHtml", "reportViewer_ctl07", "reportViewer_ctl00", "reportViewer_ctl08");

    document.getElementById('reportViewer').ClientController.PostBackAction =

        function(actionType, actionParam)

        {

            document.getElementById("reportViewer_ctl04").value = actionType;

            document.getElementById("reportViewer_ctl05").value = actionParam;

            __doPostBack('reportViewer','');

        };

}
--></Script><input type="hidden" name="reportViewer$ctl04" id="reportViewer_ctl04" /><input type="hidden" name="reportViewer$ctl05" id="reportViewer_ctl05" /><input type="hidden" name="reportViewer$ctl06" id="reportViewer_ctl06" value="0" /><input type="hidden" name="reportViewer$ctl07" id="reportViewer_ctl07" value="false" /><input type="hidden" name="reportViewer$ctl08" id="reportViewer_ctl08" value="false" /><noscript>

        &nbsp;Your browser does not support scripts or has been configured not to allow scripts.

    </noscript><Script language="javascript"><!--


    document.getElementById('reportViewer').ClientController.CustomOnReportLoaded = function() {};

    document.getElementById('reportViewer').ClientController.CustomOnAsyncPageChange = function() {};

    document.getElementById('reportViewer').ClientController.CustomOnDocMapVisibilityChange = function() {};

    document.getElementById('reportViewer').ClientController.CustomOnPromptAreaVisibilityChange = function() {};

    document.getElementById('reportViewer').ClientController.CustomOnReloadDocMap = function() {};
--></Script>

</div><iframe name="reportViewerTouchSession0" id="reportViewerTouchSession0" onload="if (frames[&#39;reportViewerTouchSession0&#39;].location != &#39;javascript:\&#39;\&#39;&#39;) frames[&#39;reportViewerTouchSession0&#39;].location.replace(&#39;javascript:\&#39;\&#39;&#39;);" src="javascript:&#39;&#39;" style="position:absolute;width:0;height:0;border-width:0;visibility:hidden;">



</iframe><script type="text/javascript">

    setTimeout("frames['reportViewerTouchSession0'].location.replace('\\\/Reserved.ReportViewerWebControl.axd?Mode=true&ReportID=dd0df78cbe0d4c119d2af4e5a13a33b7&ControlID=9495d1912ef3492e95e834ad0dab8dc8&Culture=1033&UICulture=1033&ReportStack=1&OpType=SessionKeepAlive&TimerMethod=KeepAliveMethodreportViewerTouchSession0&CacheSeed=' + encodeURIComponent(Date()));", 0);function KeepAliveMethodreportViewerTouchSession0() {setTimeout("frames['reportViewerTouchSession0'].location.replace('\\\/Reserved.ReportViewerWebControl.axd?Mode=true&ReportID=dd0df78cbe0d4c119d2af4e5a13a33b7&ControlID=9495d1912ef3492e95e834ad0dab8dc8&Culture=1033&UICulture=1033&ReportStack=1&OpType=SessionKeepAlive&TimerMethod=KeepAliveMethodreportViewerTouchSession0&CacheSeed=' + encodeURIComponent(Date()));", 1140000);}

</script><Script language="javascript"><!--
document.getElementById('reportViewer').ClientController.ShowInitialWaitFrame();

--></Script>



<script type="text/javascript">

//<![CDATA[

var theForm = document.forms['form1'];

if (!theForm) {

    theForm = document.form1;

}

function __doPostBack(eventTarget, eventArgument) {

    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {

        theForm.__EVENTTARGET.value = eventTarget;

        theForm.__EVENTARGUMENT.value = eventArgument;

        theForm.submit();

    }

}

//]]>

</script>



</form>

</body>

</html>

1 Ответ

2 голосов
/ 17 ноября 2010

В случае, если кто-то еще увидит это, моя проблема заключалась в том, как я определил элемент управления на своей странице. Я должен был установить атрибут ProcessingMode, и тогда он работал как чемпион.

<rsweb:reportviewer ID="reportViewer" Width="100%" EnableViewState="True" 
    runat="server" ProcessingMode="Remote" />

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

...