11

レポートがデプロイされ、機能しており、Report Manager で検証されています。

私のアプリケーションは、レポートが独自の aspx ページにある MVC2 アプリです。このページはバージョン 8 のレポート ビューアー コントロールで動作しましたが、新しいサーバーに移動し、SQL サーバーをアップグレードし、それに合わせて Web サイトを更新しようとしています。

サーバーは、IIS 7.5 を搭載した Windows Server 2008 です。

Chrome と IE 9 の両方でテストしています。

私の最善の努力にもかかわらず、私はまだこのエラーが発生します:

レポート ビューアーの構成エラー

レポート ビューアー Web コントロール HTTP ハンドラーがアプリケーションの web.config ファイルに登録されていません。<add verb="*" path="Reserved.ReportViewerWebControl.axd" type = "Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />web.config ファイルの system.web/httpHandlers セクションに追加するか、<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" />インターネット インフォメーション サービス 7 以降の場合は system.webServer/handlers セクションに追加します。

しかし、私はすでにこれを行っています。実際、私はMSDNからこれを読みました:

統合モードで IIS 7.0 を使用するには、system.web/httpHandlers の HTTP ハンドラーを削除する必要があります。そうしないと、IIS はアプリケーションを実行せず、代わりにエラー メッセージを表示します。

安全のために、ハンドラーをIISに直接追加する際に、構成内のWebサーバーhttpハンドラーのみ、構成内のhttpハンドラーのみ、およびその両方の組み合わせを試しました。

私のweb.configから始めましょう

<configuration
  <system.web>
    <httpRuntime maxQueryStringLength="4096" />
    <compilation 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=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
      </assemblies>
        <buildProviders>
            <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </buildProviders>
    </compilation>
  </system.web>
  <system.webServer>
    <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>
</configuration>

アセンブリ、ビルド プロバイダー、およびハンドラーがあります。他に何が間違っている可能性がありますか?

4

3 に答える 3

6

迅速で汚い回避策を見つけました-Web構成にこれを追加します:

<location path="Reserved.ReportViewerWebControl.axd">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

何らかの理由で、ページが HTTP 200 応答サーバーを取得する代わりに Reserved.ReportViewerWebControl.axd を要求すると、302 が送信されることをフィドラーで見ました - login.aspx?returnurl="Reserved.ReportViewerWebControl.axd.問題を解決します。

于 2012-03-08T00:09:33.967 に答える
1

IIS7 で ReportViewer のレンダリングに問題があると考えたので、次のように ReportViewer ハンドルを IIS7 に手動でマッピングしました。

•インターネット インフォメーション サービス (IIS) マネージャーを開き、Web アプリケーションを選択します。

•IIS 領域で、Handler Mappings アイコンをダブルクリックします。

• 右側の [アクション] ペインで、[マネージド ハンドラーの追加] をクリックします。

• [マネージ ハンドラの追加] ダイアログで、次のように入力します。

要求パス: Reserved.ReportViewerWebControl.axd

タイプ: Microsoft.Reporting.WebForms.HttpHandler

名前: 予約-ReportViewerWebControl-axd

•[OK] をクリックします。

追加することにより、Web構成によっても変更されました


まだ私のものは機能していません。上記の解決策は他の人に役立つと思いました。

于 2013-01-23T12:15:33.110 に答える
-1

asp.netプロジェクトから不要なmvcアセンブリを削除して、これを試しました。したがって、簡単な解決策は、Web プロジェクトの Bin フォルダーからWebMatrix.*.dllを削除することでした。これは、mvc フレームワークに属しているためです。

于 2013-01-23T15:53:41.510 に答える