先日、MdbからSdfに変換するWebツールの日記を書きましたが、実はSdfファイルにアクセスする為のランタイムが、.NetFramework2.0だったのです。
つまり、このランタイムを利用するアプリケーションを作成するには、2.0で作成しなければならず、泣く泣く2.0をインスコした訳ですが、かなり躊躇しましたね。
だって、Windowsってパッチを当てたら、何かのアプリケーションに影響が出たり、最悪の場合動かなくなったりとか、当たり前の世界ですから、、、
色々、調べてみたところ下記URLのようなページを発見しました。
Masayoshi's Blog - C# Express を使ってみよう 前のバージョンの.NET Frameworkと共存できるか?
うーむ、大丈夫そうかな。という訳でインスコしてみました。
しかし不安が残る為、とりあえず.NetFramework2.0をインスコした状態で1週間ほど稼動させてみて、1.1で稼動している既存システムに影響が出ないか確認してみました。
うん、問題なさそう。
で、.NetFramework2.0で作成したMdb2SDFを公開する決断をしたのですが、スンナリとは行きませんでした。
このエントリーは、その対応をまとめた備忘録です。
IISで仮想フォルダを作成し、ページにアクセスしてみたところ、エラーページが表示されました。
どうやら、Web.configの解析エラーの様です。
.NetFramework2.0で追加された要素の箇所でエラーになっているみたいでした。
うーん、アセンブリは2.0なのに1.1と思ってるみたいですねこの人(IIS)は、、、
IISに、こいつは2.0ですよー、という事を知らせてやる何らかの設定があるはずだ、と思って調べてみたら、やはりありました。
Webアプリケーションのプロパティーを開くと、「ASP.NET」というタブが追加されているじゃないですか!
いや、元からあったのか?

何しかこの画面の、ASP.NETバージョンの箇所を「2.0.50727」を選択しないと駄目っぽい。
上記を設定した後、意気揚々と再度ページにアクセスすると、今度は文字化けしてるエラーページが表示されました。
エラーページ自体が文字化けしてて、全く持って意味不明です。
ブラウザの文字コードを変えればよかったのかな?と今更ながらに思いますが、多分たいした情報ではなかったのでしょう。
うーむ、更に状況が悪くなったような気がする、、、(^^;
サーバーを再起動して再度確認してみると、今度はちゃんと表示された!
やったね!と思ってたら今度は、既存の.NetFramework1.1環境で稼動していたシステムがエラーが出るようになりました(^^;
イベントログを確認してみたところ、「同じIISプロセスで違うバージョンのモジュールを実行する事は出来ない」とか、なんとかかんとか。
正確なエラーメッセージは覚えてません(^^;
いろいろ、ググって調べてみたところ、アプリケーションプールを分けなければならないみたいです。
今まで「DefaultAppPool」しか使ったことなかったけど、こういう時の為の選択項目なんですね。

よくよく見てみると、ExchangeApplicationPoolとかもあるし、例えばこれは「Outlook Web Access」が使ってるんでしょう。
以上の設定で、無事.NetFramework2.0と1.1の共存させる事ができました。
このサーバーが共存の実例です(笑
.NetFramework1.1環境で稼動
あろーい広場
.NetFramework2.0環境で稼動
MDB2SDF
あろーい市場