Skip to content

MS_IISUpgradeASPMigration

nishi_74322014 edited this page Aug 12, 2026 · 1 revision

IISバージョンアップ(ASP移行)

概要

本ページでは、IISバージョンアップに伴う
ASP、ASP.NETの環境移行の作業範囲を扱います。

ASPの場合

概要

Active Server Pages(以下、ASP と略す)の場合は
IISバージョンアップに伴う環境移行に該当します。

ASP は IIS 6.0、IIS 7.x、IIS 8 でもサポートされます。

補足(Classic ASP は現在もサポートされている): 意外に思われるが、
Classic ASP は現在の IIS 10 / Windows Server 2022・2025 でも
「役割サービス」として提供
されている。

状況
提供 IIS の機能として継続(既定では無効。追加で有効化する)
サポート Windows のライフサイクルに準拠(IIS の一部として)
新機能 無い(メンテナンスのみ)

つまり「明日動かなくなる」性質のものではない。
ただし後述のとおり、依存する COM
先に問題になるのが実情である。

COMについて

ASP は、VBSで実装されているため、COM
処理を依存しているところが多々ありますが、
この VBSから呼び出される COM
(ActiveX Control、ActiveX EXE、VB COM)の

  • 「開発環境のサポート期間切れ」に起因する移行対象範囲の拡大や、
  • 「当該プラットフォーム上でのサポート無し」のため、

代替ライブラリの I/F 変更発生に起因する修正範囲拡大の可能性がありますので
注意が必要です。

補足(ここが最大の障壁): ASP 自体より、COM が移行を難しくする

問題 内容
開発環境が無い VB 6.0 の IDE は 2008年サポート終了。改修できない
32bit しかない 64bit の IISからインプロセスで呼べない64bit対応を参照)
ソースが無い 退職・ベンダ廃業でソースが失われているケース
代替が無い サードパーティ製 COM の提供元が消滅

2 番目の対処として、アプリケーション プールの
「32 ビット アプリケーションの有効化」を True にする
という運用が広く行われている。
ただしこれはプール全体が 32bit になるため、
メモリ上限(約 2GB / 4GB)の制約を受ける点に注意が要る。

ASP.NETへの移行

また、選択肢として、ASP.NETに移行する案も挙げられますが、
これについては ASP / ASP.NET のアーキテクチャの差異が大きく
コード コンバージョン + ポーティング移行などは不可能であるため、
マイグレーション・ツール等も用意されていません。

拡張子と構文上の変更

.asp.aspx への機械的な変換は可能だが、

このような移植は、短時間で終了するものの、
ASP.NET Web コントロール、ADO.NET、
.NET Framework クラスなどの .NET の新機能を利用することはできません。

これよりも細かい移植作業には時間がかかるかもしれませんが、
完成した ASP.NET ページは可読性と保守可能性が高まり、
より高度な機能を利用することができます。

この移行方式は、.NET の新機能を利用できないため(.NET 化する)
意味があまりありませんので、この移行パスの事例は
知るかぎりで非常に少ないです。

ASPからASP.NETへの再構築

このため、ASP から ASP.NETへの移行は、(通常、)
再構築に該当します。

補足(現在の移行先の選択): 「再構築」という結論は今も変わらない。
ただし再構築先の選択肢は変わっている。

移行先 評価
ASP.NET Web Forms 非推奨。.NET Core 以降に無い(今から選ばない)
ASP.NET MVC(.NET Framework) 同上
ASP.NET Core(MVC / Razor Pages) 推奨。クロスプラットフォーム
Blazor 画面単位・イベント ドリブンが近い

ASP からの再構築なら、.NET Framework を経由せず
直接 ASP.NET Coreを目指す
のが合理的である
(どうせ書き直すため)。
段階的に進めたい場合は、クラウド設計パターン
ストラングラー パターンが有効である。

ASP.NETの場合

概要

  • ASP.NETの場合も同様に IISバージョンアップに伴う
    環境移行に該当する。

  • ただし、IIS 5.x、6.0 から IIS 7.0 へ移行する場合、
    カスタム HTTP モジュールまたは HTTP ハンドラを使用する
    ASP.NETアプリケーションを「統合モード」で実行する場合は
    Web.configファイルに設定をする必要がある。

    • デフォルトは「統合モード
    • 「クラシック・モード」を利用するには、アプリケーション プールの設定を
      [DefaultAppPool]から[Classic .NET AppPool]に切替える。

補足(統合モードとクラシック モードの違い): IIS 7 で導入された
この 2 モードは、ASP.NETのパイプラインが
IIS のパイプラインに統合されたかどうか
の違いである。

クラシック モード 統合モード
パイプライン IIS と ASP.NET が別々 1 本に統合
ASP.NET モジュール .aspx などマップされた拡張子にのみ効く 全ての要求に効く(静的ファイルにも)
設定場所 <system.web><httpModules> <system.webServer><modules>
認証 IIS と ASP.NET で二重 一本化

移行時の典型的なエラーは次のもので、
設定を旧セクションに書いたまま統合モードで動かしたときに出る。

HTTP エラー 500.22 - Internal Server Error
統合マネージ パイプライン モードには適用されない ASP.NET 設定が検出されました。

対処は「<system.web>httpModules / httpHandlers
<system.webServer>modules / handlers へ移す」ことである
appcmd migrate config で機械的に変換もできる)。

64bit対応

Windows Server 2008 R2 以降の Server OS は、全て 64bit OS になります。
64bit対応については、こちらを参照下さい。

参考

Microsoft Learn

@IT


Tags: 移行, Windows, IIS

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally