0

スクリプトとCSSを組み合わせるためにIHttpHandlerから継承するクラスを書いています。クエリ文字列に特別なパラメータが定義されている場合にのみ結合したいと思います。このパラメーターが定義されていない場合は、ハンドラーが関与していないかのようにファイルの内容を書き込みたいと思います。無傷でファイルを配信するための最良の方法は何ですか?

EIDT:

私が遭遇している問題の1つは、仮想ディレクトリ内のスクリプトを参照するスクリプトタグがページにあるのに、現在のページがアプリケーションのサブディレクトリにあることです。

制御スクリプトが参照されているページは、webserver / Admin/Default.aspxにあります。IHttpHandlerを実装するクラスのRequestオブジェクトにアクセスすると、すべてのファイルパスプロパティは次のようになります:webserver / Admin /〜/ SharedScripts/control.js。これを解決するにはどうすればよいですか?

4

1 に答える 1

2

次のように、「ProcessRequest(HttpContextcontext)」メソッドでクエリ文字列パラメータを確認できます。

context.Request.QueryString["paramertername"]

要求されたファイルをそのままストリーミングする場合は、次のようにします。

        string physicalFilePath = context.Request.PhysicalPath;
        string fileContent = string.Empty;

        // Determine whether file exists
        if (File.Exists(physicalFilePath))
        {
            // Read content from file
            using (StreamReader streamReader = File.OpenText(physicalFilePath))
            {
                fileContent = streamReader.ReadToEnd();
            }
        }

        context.Response.Output.Write(convertedFile);
        context.Response.Flush();

PS:より包括的な例については、次のコードプロジェクトの記事を確認することもできます:http://www.codeproject.com/KB/locale/LocalizedScriptsAndStyles.aspx

于 2010-03-11T01:06:22.973 に答える