0

VS2010を使用して、 Asp.NetWebフォームが1つしかないMVC2Webロールを1つ使用して新しいAzureプロジェクトを開始しました。

問題

ReportViewerがロードされ続け、バージョンで正しく動作しないという問題が発生しています10.0か?バージョン9.0は魅力のように機能していますが、この2つの違いはわかりません。

Internet Explorerは点滅し続けますが、Chromeの「インスペクター」を使用すると、次のエラーが発生することがわかります。

<h2> Report Viewer Configuration Error </h2><p>The Report Viewer Web Control HTTP Handler has not been registered in the application&#39;s web.config file. Add &lt;add verb=&quot;*&quot; path=&quot;Reserved.ReportViewerWebControl.axd&quot; type = &quot;Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot; /&gt; to the system.web/httpHandlers section of the web.config file, or add &lt;add name=&quot;ReportViewerWebControlHandler&quot; preCondition=&quot;integratedMode&quot; verb=&quot;*&quot; path=&quot;Reserved.ReportViewerWebControl.axd&quot; type=&quot;Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot; /&gt; to the system.webServer/handlers section for Internet Information Services 7 or later.</p>

私がこれまでにしたこと

(複数のサイトでアドバイスされているように)ドラッグアンドドロップは1つだけScriptManagerですReportViewer
プロジェクト参照は自動的に作成され、web.configのアセンブリは問題ないように見えます。

    <add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
    <add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />

次のステップは、ハンドラーをweb.configに追加することです。

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

<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="true" />

  <!-- added handler for reporting -->
  <handlers>
    <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </handlers>
</system.webServer>

その後、<script runat="server"></script>簡単にデバッグできるように、内にレポートプロパティを設定しました。

私のウェブフォーム

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Report.aspx.cs" Inherits="MvcWebRole1.Reports.Report" %>

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            ReportViewer1.ProcessingMode = ProcessingMode.Remote;
            ReportViewer1.ServerReport.ReportServerUrl = new Uri("https://XXXX.reporting.windows.net/ReportServer");
            ReportViewer1.ServerReport.ReportPath = "/MyReport.rdl";
            ReportViewer1.ServerReport.ReportServerCredentials = new Credentials();
        }

        public class Credentials : IReportServerConnection
        {
            public IEnumerable<System.Net.Cookie> Cookies { get { return null; } }
            public Uri ReportServerUrl { get { return new Uri("https://XXXX.reporting.windows.net/ReportServer"); } }
            public int Timeout { get { return 60000; } }

            public bool GetFormsCredentials(out System.Net.Cookie authCookie, out string userName, out string password, out string authority)
            {
                authCookie = null;
                userName = "MyUserName";
                password = "MyPassword";
                authority = "XXXX.reporting.windows.net";
                return true;
            }
            public System.Security.Principal.WindowsIdentity ImpersonationUser { get { return null; } }
            public System.Net.ICredentials NetworkCredentials { get { return null; } }
        }

    </script>
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <rsweb:ReportViewer ID="ReportViewer1" runat="server">
        </rsweb:ReportViewer>
    </div>
    </form>
</body>
</html>

次は何ですか?

誰かが私がこの問題を解決する方法を知っていますか!?

だから、これまでのところ:

  1. レポートバージョン10.0
  2. Web.configは、アセンブリとハンドラーでも問題ないように見えます
  3. VisualStudioデバッガーを試しました
  4. IISExpressを試しました
  5. Windows Azureプロジェクト(エミュレーター付き)を試しました
4

3 に答える 3

0

system.webにhttpHandlerを追加してみましたか?

<system.web>
   <httpHandlers>
      <add path="Reserved.ReportViewerWebControl.axd" verb="*" 
      type="Microsoft.Reporting.WebForms.HttpHandler, 
      Microsoft.ReportViewer.WebForms, Version=10.0.0.0, 
      Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" 
      />
   </httpHandlers>
</system.web>
于 2012-09-25T09:35:33.107 に答える
0

あなたと同様のセットアップで、しかしMVC3と2012で同様のレポートビューアの問題をデバッグするのに一日を費やした後、私はあなたが見ることができるHttpHandlerブロックが赤いニシンであるとあなたに言うことができます。レポートビューアコントロールは、すべてが正常に機能している場合でも、HTMLのそのブロックを出力します。

問題が私のものと同じである可能性が低い場合は、レポートに渡されるパラメーターを確認してください。それらのいずれかが「」の場合、レポートビューアはロードされません。そのパラメータを「」に変更するか、単に渡さないでください。これが当てはまる理由については、私には正当な理由がないのではないかと思います。

于 2012-09-25T21:17:59.793 に答える
0

さて、「エラーメッセージ」はいつもそこにあり、表示されるのを待っているようです!だからあなたを騙してはいけません!

結局、私は自分の解決策に非常に近づきました...私は1つの単純な行を追加するだけで済みました(それは私に数時間しかかかりませんでした):

if(!IsPostBack){
    // All my ReportViewer1 stuff goes here
}

このページも非常に便利だと思いました:非同期レンダリング用のReportViewerの構成

于 2012-09-26T10:34:29.650 に答える