2011-08-01 14 views
1

これで、古い会社のWebサイトで作業しています。ここでは古典的なASPを話しています。私は開発サーバーで作業していましたが、2番目はプロダクションサーバーに入りました。Webサービスのようなサーバー上の他のものが壊れ始めました。特定のファイル/フォルダのみのHTTPハンドラの登録またはプログラムによるHTTPハンドラの登録

基本的に、レポートビューアコントロールを使用するaspxページを追加しました。この問題は、Web設定ファイルにhttpハンドラを追加したときに発生します。サイトのアーキテクチャーはすべてねじれているので、ルートWeb設定ファイルを変更する必要があります。これは、サブディレクトリがルートWeb設定ファイルを継承するため、問題を引き起こしています。ここで

は私が仕事だろうと思った私が試した事がある。ここ

enter image description hereを取得していますエラーです。

まず、Web設定ファイルにlocation要素を追加してもうまくいくと思ったが、(もちろん)httpハンドラを登録していない。そしてそれは間違いを投げている。

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

次の1があり

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

いずれかの私は、サブディレクトリにASPXファイルを移動し、それをそこにHTTPハンドラを登録し、その者自身のWeb設定ファイルを与えるだろうと思ったが、それdidntのスティック私が試したことはうまくいきますが、すべてのサブフォルダがそのプロパティを継承しないことは確かではありません。

ロケーションパスを「。」に設定します。

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

私の質問は...プログラムでこのHTTPハンドラを登録する方法はありますか?または、あなたは私のWeb設定の設定に何か間違った点があるかもしれません。

答えて

1

あなたの解決策は、Webルート内またはその下に存在するReserved.ReportViewerWebControl.axdへのすべての要求に対してハンドラを呼び出す原因となります。あなたがあなたのハンドラを隔離したい場合のみ、パスの先頭に/でweb.configファイルにエントリを追加し、ルートからアクセス可能:

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

あなたは、単一のサブディレクトリにすべてのものを分離したい場合以下のように、web.configファイルにエントリを追加します。

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

をとして指定したパスにハンドラを登録:

path="Reserved.ReportViewerWebControl.axd" 

はハンドラは01への要求のために呼び出されることになります、使用されるサブディレクトリに関係なく。 IIS6の下

EDIT
、あなたはReserved.ReportViewerWebControl.axdのみ、以下のようにちょうどハンドラへの参照を追加し、ルートから利用できるようにしたい場合。パス要素の先頭に/を追加するだけでよいのです。

<system.web> 
    <httpHandlers> 
     <add verb="*" 
       path="/Reserved.ReportViewerWebControl.axd" 
       type="..." validate="false" /> 
    </httpHandlers> 
</system.web> 

あなたがこのアプローチを取ると、あなたがCould not load type 'Microsoft.Reporting.WebForms.HttpHandler'エラーが出る場合は、(あなたはまた、GACにそのアセンブリを追加する必要があります)web.configで\アセンブリをコンパイルするには、以下の追加してみてください:

<system.web> 
    <compilation debug="true"> 
     <assemblies> 
      <add assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
     </assemblies> 
    </compilation> 
    ... 
    <httpHandlers> 
    ... 
    </httpHandlers> 
</system.web> 
+0

私は努力のためにあなたをアップアップしますが、悲しいことに、これはうまくいきませんでした。 – Odnxe

+0

@Odnxe何がうまくいかなかったかについてさらに詳しく調べることができますか?どの方法を試しましたか?また、どのバージョンのIISを使用していますか?私はIIS 7.5/ASP.NET 4.0/Classicで管理されたパイプラインを使ってテストしましたが、答えに記述した方法で動作しているようです。 – rsbarro

+0

IIS v6とasp.net 2.0です。私は両方の方法を試してみました(私は、プロダクション上のaspxページとテスト用のサブディレクトリにaspxページを持っています) – Odnxe

0

ちょうど注記:Could not load type 'Microsoft.Reporting.WebForms.HttpHandler'は私たちの生産環境でしか得られませんでした。アセンブリをassembliesセクションの<system.web>に追加しましたが、それでも動作しませんでした。次に、これに基づいて、マシン上のグローバルアセンブリキャッシュ(GAC)をチェックしました。そのマシンでMicrosoft.ReportViewer.WebFormsのバージョンが8.0.0.0ではなく9.0.0.0であったことがわかります。私はweb.configでその行を更新しました。ありがとう!

関連する問題