xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

IIS Expressを64bitモードで動かす

Visual StudioでWebアプリ開発をするときによくお世話になるIIS Express、これは既定では32bitモードで動作します。これまでのWebアプリ開発では特に何事もなかったのですが、最近業務で以下のような環境下での開発をしていてハマりました。

  • Windows 7 x64
  • Visual Studio 2013 + IIS Express
  • .NET Framework 4.5
  • ASP.NET MVC 5
  • Oracle 11g

これまでと違ったはOracleデータベースの利用。ずっとSQL Serverで開発をしていたのでOracleは初体験でした。Oracleへの接続にはODP.NETの64bit版を利用していたのですが、これを参照設定に追加しても全然動かない。具体的には、以下のようにBadImageFormatExceptionが飛んでいました。

BadImageFormatException

つまるところ、32bitと64bitの混在はダメ!という内容です。そこまでは分かるのですが、Any CPUモードでのコンパイルをx64モードにしてもx86モードにしても動かない。何が悪いのかサッパリ分からない状態で丸一日以上悩んだ結果、ホスティングしているIIS Expressが32bitで動いているのではないかと思って調べてみました。

方法 1 : オプションでの設定

IIS Expressを64bitモードで動作させるには、Visual Studioのオプションの設定を変更すればOKです。

  1. [ツール] - [オプション] を開く
  2. [プロジェクトおよびソリューション] - [Web プロジェクト] を開く
  3. [Web サイトおよびプロジェクト用 IIS Express の64ビット バージョンを使用] をON

WebProjectSetting

これでODP.NET 64bitでの参照設定の問題は解決しました。Oracleを使ったWeb開発で、今後こんな不毛な苦労をする人がいなくなりますように...。

方法 2 : レジストリでの設定

やらないとは思いますが、レジストリを直接編集することでも設定可能です。赤字で「xx.0」となっている箇所にはVisual Studioの内部バージョンが入ります。最新のVisual Studio 2013の場合は「12.0」です。

項目
キー HKEY_CURRENT_USER¥Software¥
Microsoft¥VisualStudio¥xx.0¥WebProjects
値名 Use64BitIISExpress
データ 1

レジストリの操作/編集には十分気を付けてください。