カスタム HTTP ハンドラーに関して、私には明確でないことがあります。
このブログ投稿ScriptTranslator
に従って HTTP ハンドラーを作成
し、次の方法で web.config ファイルにハンドラーを登録しました。
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<add name="ScriptTranslatorHandler" path="*.js.axd" verb="*" type="CamelotShiftManagement.HttpHandlers.ScriptTranslator" />
</handlers>
</system.webServer>
IgnoreRoute
また、web アプリが we.config ファイルに従ってハンドラーを起動できるように、global.asax にコマンドを追加しました。
routes.IgnoreRoute("{resource}.js.axd/{*pathInfo}");
ハンドラーは html ファイルから JS ファイル参照を変換すると想定されているため、スクリプト参照を変更axd
し、最後に拡張子を追加します。
ハンドラーはリクエストを受け取り、axd 拡張子のないファイルを検索して、翻訳が必要なスクリプト コンテンツを取得します。基本的なProccessRequest
アクションは次のとおりです。
public void ProcessRequest(HttpContext context)
{
string relativePath = context.Request.AppRelativeCurrentExecutionFilePath.Replace(".axd", string.Empty);
string absolutePath = context.Server.MapPath(relativePath);
string script = ReadFile(absolutePath);
string translated = TranslateScript(script,CultureInfo.CurrentCulture);
context.Response.Write(translated);
Compress(context);
SetHeadersAndCache(absolutePath, context);
}
したがって、私のhtmlファイルでは、スクリプトタグの参照のみを変更します。実際のファイルはありませmyscript.js.axd
んmyscript.js
.
404 エラーが発生します。
私はカスタム HTTP ハンドラーの作成と使用に非常に慣れていないため、その使用法から何が期待できるかわかりません。
参照されているブログ投稿は、コードに実際の .js.axd ファイルが存在してはならず、スクリプト参照の要求がハンドラーに再ルーティングされ、前に提供したコードの最初の 2 行を使用して実際の .js ファイルを処理することを意味します。それ。
カスタム HTTP ハンドラーを設定しないと、最初にハンドラー コードを実行してから 404 エラーをスローする必要がありますか、それともハンドラー アクションをサポートするダミーの myScript.js.axd ファイルを作成する必要がありますか?