今年はWindows 2000の延長サポートフェーズが終了することから、延命されていたサーバもようやく取り替えることになりそう。

そこで気になるのが、IIS5.0で動作しているASPアプリケーションをIIS7.0もしくはIIS7.5で動作するかということ。
実際に稼働しているASPアプリケーションをIIS7.xで検証してみた。

  IISのバージョン※2003は省略
    ・IIS5.0  Windows 2000 Server
    ・IIS7.0  Windows Server 2008
    ・IIS7.5  Windows Server 2008 R2

【検証に使用したアプリケーション】
モデル1
  ASP + BASP21 + ADO + SQLServer

モデル2
  ASP + COM(VB6で作成) + ADO + Access

【結果】
検証に使用したアプリケーションが複雑ではなかったためか、IISの設定を一部変更するだけで、特にプログラムを修正することなく動作した。
以下にIIS5.0からIIS7.xに移行するにあたって注意するポイントを記載する。

・IIS7.xでは、ASPが標準ではインストールされないので、役割サービスの追加でASPを追加する。
・IISにMIMEの種類が登録されていない場合、不明な拡張子のファイルは、配信されないようになっている。
・IIS5.0では仮想ディレクトリの追加すつことでアプリケーションが追加されていたが、IIS7.xでは仮想ディレクトリの追加とアプリケーションの追加が分かれる。global.asaはアプリケーションのルートに配置する。※仮想ディレクトリのルートに配置したglobal.asaは動作しない。
・アプリケーションプールのリサイクル設定やアイドル状態の監視により、
  予期せずセッションが終了する。
・ASPアプリケーションは32ビットアプリケーションなので、64ビット環境の場合は、アプリケーションプールの32ビットアプリケーションの有効化をTrueに設定する。
AppPool

・Accessを使用する時は、アプリケーションプールのユーザプロファイルの読み込みをFalseに設定する。ユーザプロファイルの読み込みをTrueにしたい場合は、以下のページの情報に従って一時ディレクトリのアクセス権を変更する。

  IIS7.0でAccessデータベースに接続するASPページでエラー'80004005'
  http://support.microsoft.com/kb/926939/ja

・既定では親パスが無効になっているため"../image/start.gif"のように現在のディレクトリより上のディレクトリに相対パスを使用してアクセスできない。
・検証用にデバッグプロパティをTrueに設定する。
ASP

・ASPがレスポンスのバッファ処理を行う際に4MBを超えてバッファ処理を行うとエラーになる。(IIS5.0では無制限)
・ASPがリクエストのエンティティボディとして受け取れる最大サイズが200KBに制限される。(IIS5.0では無制限)ファイルをアップロードする場合は最大要求エンティティボディ制限を増やす。
・URLScan2.5と同等の機能が要求フィルタとして追加される。
・ファイルのアクセス権がEveryon:フルコントロールから厳しくなっているのでIUSRグループに対して適切なアクセス権を設定する。
・ASPから使用しているCOMコントロールがWindows 2008に対応しているかどうかを確認する。

【参考】
IIS 7.0 および IIS 7.5 上で Classic ASP アプリケーションを実行する
http://technet.microsoft.com/ja-jp/library/ee155445.aspx