normalian blog

Let's talk about Microsoft Azure, ASP.NET and Java!

Classic ASP アプリを2013年らしい環境で動かすには?

今回は、One ASP.NET Advent Calendar 2013 8日目の記事だ。すでに様々な記事が One ASP.NET Advent Calendar に登録されているため、是非こちらも参照して頂きたい。
さて、今回のテーマは最新とは程遠い Classic ASP (なんなら ASP".NET" ですらない。。。)であり、名前の通りかなり Classic な技術ではあるが、2013年時点でも様々なところで利用されている技術だ。既存の Classic ASP を動作させる環境としては Windows Server 2003 R2(32bit)+IIS 6.0 以下の環境が多いと思う。

Web サイトで Classic ASP を稼働させる

IIS 8.0 & Windows Server 2012 の環境(2013年12月現在)である Windows Azure Webサイトで Classic ASP を動作させるのは難しくない。管理ポータルから Web サイトを作成した後、以下の画像を参考に「構成」タブから「マネージ パイプライン モード」を「クラシック」にして設定を保存することで、簡易的な実行環境は構築できる*1

マネージ パイプラインモードについては以下のリンクを参照してほしい。

次に、「ダッシュボード」タブから画面下部の WebMatrix ボタンを押下して WebMatrix を起動してサンプルを作成する。WebMatrixASP.NET Web Page, PHP, Node.js 等も編集可能だが、もちろん Classic ASP のアプリケーションを編集することも可能だ。管理ポータル越しに Web サイトを WebMatrix から起動し、以下の画面を参考に Default.asp という名前の Classic ASP ファイルと Global.asa ファイルをトップに追加する。

更に、以下の様にコードを追記する。

<%@ Language="VBScript" %>
<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="utf-8" />
        <title>Classic ASP on Web サイト</title>
    </head>
    <body>
        <h2>セッション上の値</h2>
        <%= Session("MyMessage") %>
        <br />
        <h2>環境変数一覧</h2>
        <%
            For Each name In Request.ServerVariables
                 Response.Write name & " = " & Request.ServerVariables(name) & "<br />"
             Next
        %>
    </body>
</html>
  • Global.asa
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
    Sub Application_OnStart 
    End Sub 

    Sub Application_OnEnd 
    End Sub 

    Sub Session_OnStart 
        Session("MyMessage") = "メッセージ at Global.asa"
    End Sub 

    Sub Session_OnEnd 
    End Sub 
</SCRIPT>

上記のソースコードを Web サイト上に配置することで、以下の様に Web サイト上の環境変数一覧を表示できる。

一見簡単に動作できる様に見えるが、細かな挙動が過去のIIS(主に IIS 6.0以下になるだろうが・・・)とは異なるため既存の Classic ASP アプリケーションがうまく動作しないこともある。その場合は次の仮想マシン編を参照して頂きたい。

仮想マシン上(Windows Server 2012 R2)で Classic ASP を稼働させる

今までは Web サイト上で動作させていたが、IIS 7.0 以降で Classic ASP を動作させる場合には以下の様な考慮が必要になる。参考になる情報がIIS 7.0 および IIS 7.5 上で Classic ASP アプリケーションを実行するに記載されているが、主要な留意点を以下に記載する。

  • Classic ASPIIS 7.0 以降では既定ではインストールされないため、役割を追加時に設定が必要(設定は以下の画像を参考のこと)


  • 失敗した要求トレースを使用して Classic ASP エラーをブラウザ側でトラブルシューティングができないため、IIS Managerで設定が必要(設定は以下の画像を参考のこと)

  • Classic ASP の親パスは既定で無効であるため、IIS Managerで設定が必要(設定は以下の画像を参考のこと)

  • 仮想ディレクトリがアプリケーションとして認識されない(Global.asa がディレクトリ毎に実行されない)ため、IIS Managerで設定が必要(設定は以下の画像を参考のこと)

上記を実施すれば、仮想マシン上で Classic ASP を実行する環境が整うはずだ。他にも以下の情報が参考になるので、必要な場合に参照頂きたい。

*1:デフォルトの設定である「統合」のままでも Classic ASP は動作するが、以下の記事でも記載されている様に、IIS がアプリケーションを動作させる機構が異なる点に注意が必要だ(「統合」モードでアプリケーションがそのまま動作する場合、「統合」モードにしていただいても問題ない)