4

アプリケーションで使用される JavaScript ファイルをローカライズするために HTTP ハンドラーを使用しています。「ASP.NET で JavaScript ファイルのテキストをローカライズする」を参照してください。

提供されたハンドラーを使用したいので、次のようにしました。

1) Global.asax でこのコードを使用する無視されたルート -routes.IgnoreRoute("{resource}.js.axd/{*pathInfo}");コード行をRegisterRoutesメソッドに追加したので、次のようになります。


public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{resource}.js.axd/{*pathInfo}");

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
         new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
    }

2) Views フォルダの web.confing ファイルに行を追加<add path="*.js.axd" verb="*" type="CamelotShiftManagement.HttpHandlers.ScriptTranslator" />したので、次のようになります。


<system.web>
   <httpHandlers>
      <add path="*.js.axd" verb="*"  type="CamelotShiftManagement.HttpHandlers.ScriptTranslator" />
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
   </httpHandlers>

それでも、次の URL にアクセスしようとすると、ページが見つかりませんというエラーが表示されます。

http://camelotshiftmanagement.com/Scripts/Administration/OrganizationalStructure.js.axd

ここで何が間違っていますか?


進行状況: わかりました、厄介な間違いを発見しました...何らかの理由で、 Handler を追加する*.js.axdとファイルが見つかると思っていましたが、実際にはファイルが拡張子なしで名前が付けられていたため、見つかりませんでしOrganizationalStructure.js.axdこれが404 エラーの理由ですが、サーバーから別のエラーが発生したため、再度サポートが必要です。

アクセスするhttp://camelotshiftmanagement.com/Scripts/Administration/OrganizationalStructure.js.axdと、今回は別のエラーが発生しました: 404.17 要求されたコンテンツはスクリプトのようであり、静的ファイル ハンドラーによって提供されません。

追加のエラー情報

Server Error in Application "CAMELOTSHIFTMANAGEMENT.COM"
Internet Information Services 7.5
Error Summary
HTTP Error 404.17 - Not Found
The requested content appears to be script and will not be served by the static file handler.

Detailed Error Information
Module:  "StaticFileModule"
Notification:  "ExecuteRequestHandler"
Handler:  "StaticFile"
Error Code:  "0x80070032"
Requested URL:  "http://camelotshiftmanagement.com:80/Scripts/Administration/OrganizationalStructure.js.axd"
Physical Path:  "C:\Code\CamelotShiftManagement\CamelotShiftManagement\Scripts\Administration\OrganizationalStructure.js.axd"
Logon Method:  "Anonymous"
Logon User:  "Anonymous"

Most likely causes:
The request matched a wildcard mime map. The request is mapped to the static file handler. If there were different pre-conditions, the request will map to a different handler.

Things you can try:
If you want to serve this content as a static file, add an explicit MIME map.

さて、私はここで私のリーグを超えています...カスタムハンドラーが呼び出されず、代わりにStaticFileハンドラーが呼び出される理由がわかりません。

4

1 に答える 1

1

わかりました...だから私はそれを修正しました(私は思う)。

2 つの問題がありました。1. ファイル名に拡張子があり、ハンドラが必要.jsとしていない。.js.axd2. デフォルトでは認識されないカスタム拡張であるため、IIS にハンドラーを登録する必要がありました。そのために、MVC アプリケーション<system.webServer>のメイン ファイルのノードの下に次のコードを追加しました。Web.Config

<handlers>
        <add name="CustomScriptHandler" path="*.js.axd" verb="*" type="CamelotShiftManagement.HttpHandlers.ScriptTranslator" />
</handlers>

IIS マネージャーを使用して実行できる GUI プロセスもあります (7): Web サイト ノードを開く --> ハンドラー マッピング --> スクリプト マップの追加

いいえ、サーバーによって正しいハンドラーが起動され、コードが実行されます。

私が確信していない唯一のことは、ハンドラーが処理するJavascriptファイルを探し、サーバーがカスタムハンドラーを開始するファイルを探すため、拡張子.js.axdと拡張子を持つファイルがまだ必要であることです。.js.js.axd

誰かが他の洞察を持っているなら、ぜひそうしてください。

于 2012-10-04T22:24:50.407 に答える