2010年5月22日土曜日

ASP.NET の互換性


Windows Server 2003 で動いていたASP.NET で構築したシステムを Server 2008 にもってきたら一部動作しない(Stack Overflow が発生する)ページがあると泣きつかれて調査することに。

いろいろ調べてたら原因は OS というより、ASP.NET のバージョンでした。2003 のほうでは ASP.NET 1.1 で動作しており、2008 では ASP.NET 2.0 で動作させていたことが原因。
調べてたら結構、互換性に難有りのようですね(表示がくずれるとかではなく)。そんなのにひっかかるような作りも悪いんだろうけど・・・。2008 でも ASP.NET 1.1 に変更することで動作しました。

教訓:ASP.NET のバージョンは開発環境と同じものを使え。

ただし、2008 で ASP.NET 1.1 を動作させるにはいろいろ作業が必要で。以下、情報ソースが消えても大丈夫なように個人的なメモ。

①IIS の役割から「メタベース互換性」を追加。
②.NET Framework 1.1 追加
③IIS 管理コンソールのルートで「ISAPIとCGIなんちゃら」を開いて「ASP.NET 1.1」を「拒否」から「許可」に変更。
④Machine.config を開いて IgnoreSection を追加。
%windir%\Microsoft.NET\Framework\v1.1.4322\config\machine.config を開いて</configSections>の前に

<section name="system.webServer" type="System.Configuration.IgnoreSectionHandler,
    System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 

を追加。
⑤仮想ディレクトリのアプリケーションプールを開いて「ASP.NET 1.1」に変更。


2003 のころは仮想ディレクトリのASP.NETタブ開いてバージョン選ぶだけだったのに。IIS7 になってから手順やらクリック数が増えすぎ。

0 コメント:

コメントを投稿