0

始める前に、次のアドバイスに従いました。

「このリクエストを処理するには、WebResource.axd ハンドラーを構成に登録する必要があります。」エラー

そこでのアドバイスを使用して、別のサーバーで実行されている MVC 4 アプリで過去に発生した同様の問題を修正しました。

MVC 4 アプリに変換したいので、Web サイトの 1 つを .Net 4.0 にアップグレードしようとしています。私は少しずつそれを行うことを計画しています*。古いフォームベースの Web サイト プロジェクトのすべてのオブジェクトを調べて、.Net 4 フレームワークで一部として正常に実行できるように設定するのに多くの時間を費やしました。ハイブリッド(当分の間)サイトの。ほとんどの場合、クラスを App_Code フォルダーから通常のフォルダーに移動し、それらをコピー/コンパイルするようにマークする必要がありました。

今、私は新しい問題を抱えています。埋め込みリソースを呼び出そうとするページに移動すると、WebResource.axd エラーが発生します。

The WebResource.axd handler must be registered in the configuration to process this request.

スタックトレース:

    [InvalidOperationException: The WebResource.axd handler must be registered in the configuration to process this request.

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <httpHandlers>
            <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" />
        </httpHandlers>
    </system.web>
</configuration>]
   System.Web.Handlers.AssemblyResourceLoader.GetWebResourceUrlInternal(Assembly assembly, String resourceName, Boolean htmlEncoded, Boolean forSubstitution, IScriptManager scriptManager) +4179118
   System.Web.Handlers.AssemblyResourceLoader.GetWebResourceUrl(Type type, String resourceName, Boolean htmlEncoded, IScriptManager scriptManager) +956
   System.Web.UI.ClientScriptManager.RenderWebFormsScript(HtmlTextWriter writer) +257
   System.Web.UI.Page.RenderWebFormsScript(HtmlTextWriter writer) +86
   System.Web.UI.Page.BeginFormRender(HtmlTextWriter writer, String formUniqueID) +1847
   System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +95
   System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +48
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +11423020
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +246
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +11423020
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +246
   System.Web.UI.Page.Render(HtmlTextWriter writer) +40
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +11423020
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5290

LIS 私が最初から書いた別の MVC 4 サイトでこのエラーを見て修正しました。これは、ColdFusion もサーバーにインストールされているために発生し、ColdFusion および .Net アプリケーションをホストする IIS サーバーの既知の問題です。だから私はここでアドバイスに従いました:

「このリクエストを処理するには、WebResource.axd ハンドラーを構成に登録する必要があります。」エラー

そのサイトを「クラシック」モードで実行するように構成しましたが、正常に動作します。

しかし、今回は違います。アプリプールを「クラシック」モードに設定してみました。管理者がそのように設定してくれましたが、404/500 エラーが発生しました。次に、ISAPI と CGI を有効にすると、今度はクラシック モードで実行中に、上記の WebResource.axd エラーに戻りました。

そこで、上記のリンクにある他の提案をいくつか試しました。具体的には、このアドバイスに従いました(同じリンク、2番目の回答)

これを行うには、IIS で問題のサイトに移動し、[IIS] セクションの下にある [Handler Mappings] をダブルクリックして、「AboMapperCustom-XXXXXX」などのパスに「*」が付いた名前のハンドラーを見つけます。エントリを選択し、サイドバーの [削除] をクリックします。これにより、アプリケーションのマッピングが削除されるだけなので、サーバー上の既存の CF サイトが壊れることはありません。

管理者にそのように依頼したところ、次のような返信がありました。

「AboMapperCustom-94661 * Handler は親から取得されていますが、個々のサイト web.config で削除されています。実際に ColdFusion を壊してしまうため、デフォルト/親サイトからそれらを削除できません。」

ここで解決策を試しましたhttp://blog.fredrikhaglund.se/blog/2008/08/26/solution-to-webresourceaxd-exception/また、web.config の httpHandlers セクションは次のようになります。

<system.web>
   ...
   <httpHandlers>
     <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="true" />
     <add path="*/ext.axd" verb="*" type="Ext.Net.ResourceHandler" validate="false" />
     <add path="glimpse.axd" verb="GET,POST" type="Glimpse.Core.Handler" />
   </httpHandlers>

私の問題の大部分は、IIS サーバーへの管理者アクセス権がないため、自分でアクセスして解決できないことです。次に何をすべきか手探りしていますが、いくつかの選択肢があるようです。

  1. このエラーをキャッチするエラー ハンドラーを設定し、新しいサイト用にそのページが書き直されるまで、「工事中」のページにリダイレクトします。これは可能ですが、理想的ではありません。
  2. どういうわけか、Coldfusion マッピングが行われる前に axd リクエストを取得するようにフィルターを設定します (私が持っている漠然とした概念であり、それ以上の調査がなければどのように/なぜ機能するのかわかりません)。
  3. 問題を解決する可能性のある、管理者が実行する別の構成要求を考え出してください。

私の問題を解決する#3に関連するアイデアはありますか? そうでない場合は、最終的にオプション 1 を選択する前に、オプション 2 とオプション 3 について数時間調査することになるでしょう。この問題を回避する最善の方法は何ですか?

4

1 に答える 1

0

私の問題の解決策を見つけました。

.Net 4.0 の ASP.Net 構成設定を読んだ後

httpHandlersセクションの削除要素を見つけました

次のように httpHandlers に remove を追加すると:

<httpHandlers>
      <remove path="WebResource.axd" verb="GET"/>
      <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="true" />

できます!

于 2013-01-11T23:22:06.243 に答える