どっとねっとふぁん

C# Tips And Samples
in 検索

Ver1.1でaspxファイルを配置せずにWebアプリケーションを実行する

最新の投稿は、投稿日時: 06-22-2005, 3:28 午後 投稿者: ono です。スレッドには 0 件の返答があります。
投稿のソート: 前へ 次へ
  •  06-22-2005, 3:28 午後 9

    Ver1.1でaspxファイルを配置せずにWebアプリケーションを実行する

    ASP.NET ver2.0 の機能として、事前にコンパイルした dll を配布して
    アプリケーションを実行する、というものがあります。
    この場合、コンパイルする時間が必要なくなる、ソースを隠蔽する
    ことができる、といったメリットが享受できます。

    ASP.NET ver1.1でも同じようなことができないのかいろいろやってみた
    結果、以下の手順で実行できることが確認できました。

    1.実行するサンプルの準備

    IIS 上に sample フォルダを作成し、Webアプリケーションとして設定します。
    ここに以下の内容で Page1.aspx、Page2.aspx ファイルを作成します。

    Page1.aspx
    ------------------------------------------------
    <%@ Page language="c#"%>
    <html>
    <head>
    <script runat=server>
    void button1_Click(Object sender, EventArgs e)
    {
        Server.Transfer("page2.aspx");
    }
    </script>
    </head>
    <body>
    Page1 です<br />
    <form runat="server">
    <asp:Button id="Button1" Text="Page2へ" OnClick="button1_Click" runat="server"/>
    <br />
    </form>
    </body>
    </html>
    ------------------------------------------------

    Page2.aspx
    ------------------------------------------------
    <%@ Page language="c#"%>
    <html>
    <head>
    <script runat=server>
    void button1_Click(Object sender, EventArgs e)
    {
        Response.Redirect("page1.aspx");
    }
    </script>
    </head>
    <body>
    Page2 です<br />
    <form runat="server">
    <asp:Button id="Button1" Text="Page1へ" OnClick="button1_Click" runat="server"/>
    <br />
    </form>
    </body>
    </html>
    ------------------------------------------------

    2.実行用フォルダの準備

    IIS 上に compiled フォルダを作成し、Webアプリケーションとして設定します。
    この下に bin フォルダを作成しておきます。

    3.テンポラリフォルダのクリーンアップ

    ASP.NET は実行時に dll をテンポラリフォルダに作成します。
    ここで作られる dll を取り出しますので、まず最初にテンポラリフォルダを
    きれいにしておきましょう。

    C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files

    標準ではここがテンポラリフォルダになりますから、このフォルダの下に
    存在しているフォルダをすべて削除してしまいましょう。

    なお、削除できないファイルがある場合は、コンピュータの管理ツールから
    World Wide Web Publishing  サービスを停止して再度削除を行ってください。
    停止したサービスは再開しておきます。

    4.サンプルの実行

    http://localhost/sample/page1.aspx にアクセスしてサンプルを実行します。
    ボタンをクリックしてpage2.aspxも表示させ、実行してみましょう。
    ページを2、3回切り替えれば十分です。

    5.dll の取り出し

    テンポラリフォルダから作成された dll を取り出します。
    私の場合、
    C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\sample\89e3d426\d56660c7
    というフォルダに 4syuycyc.dll が作成されました。
    この 4syuycyc.dll を compiled\bin フォルダにコピーします。

    なお、これらのフォルダ名、ファイル名は生成時にランダムにつけられます
    ので、以下の記述中のファイル名等は、自分の環境で作成された名前に
    読み替えるようにしてください。

    6.クラス名の確認

    ildasm を使って生成されているクラス名を確認します。

    ildasm は C:\Program Files\Microsoft.NET\SDK\v1.1\Bin の下にあると思います。
    このツールを起動して、4syuycyc.dll を表示してみてください。
    _ASP というネームスペースの中に Page1_aspx、Page2_aspx という2つの
    クラスが生成されているのがわかるかと思います。

    7.Web.config の作成

    compiled フォルダに以下の内容の Web.config ファイルを作成します。

    ------------------------------------------------
    <configuration>
       <system.web>
          <httpHandlers>
             <add verb="*"
                  path="Page1.aspx"
                  type="_ASP.Page1_aspx, 4syuycyc"/>
             <add verb="*"
                  path="Page2.aspx"
                  type="_ASP.Page2_aspx, 4syuycyc"/>
         </httpHandlers>
       </system.web>
    </configuration>
    ------------------------------------------------

    ここに記述されている設定は、

    • Page1.aspx という URL にリクエストがあったら、4syuycyc.dll に存在する_ASP.Page1_aspx クラスを呼び出す。
    • Page2.aspx という URL にリクエストがあったら、4syuycyc.dll に存在する_ASP.Page2_aspx クラスを呼び出す。

    という内容になります。
    この設定があれば、Page1.aspx というファイルの実態は不要です。

    8.動作の確認

    http://localhost/compiled/page1.aspx にアクセスしてアプリケーションが実行できる
    ことを確認してください。

     

    ○注意事項

    • dll が複数生成された場合、どの dll の中にどのページのクラスが含まれているかの確認を慎重に行ってください。Web.config の設定は確認した内容に合わせてください。
    • VS.NET で作成した Web アプリケーションでも同様の設定が可能だと思います。この場合、VS.NET が bin フォルダに生成する dll もコピーする必要があります。

    あおい情報システム株式会社
     小野修司(どっとねっとふぁん)
RSS ニュースフィードで参照
SkinName:iroha_CS2
Powered by Community Server, by Telligent Systems