ワーカープロセスの実行ユーザ
ASP.NETでWebアプリを開発している時に、フォームのロードイベントでSSLサイトに対してアクセスして情報を取得後、その情報から画面を構築する処理を書いていた。
VS2005についている開発用Webサーバーでは、正常に動作したがIISで動作させると指定したサイトへのアクセスがタイムアウトしたというようなエラーメッセージが表示された。
開発用WebサーバーとIISの違いといえば、サーバープロセスを実行しているユーザアカウントの実行権限ぐらいしか思いつかなかったので、さっそくIISのASP.NETワーカープロセスの実行アカウントを調べてみた。
まぁ、想像どおりASPNETユーザで動作している。
そして、これを変更する方法を調べてみると、どうやらIIS6.0(Windows 2003 Server)ならワーカープロセスを個別に設定することができるので、実行権限も簡単に指定できるみたい。
このWebアプリを動作させるサーバーは、Windows 2003 Serverなので本番は問題ないが、開発はXPでやるので、これはしんどい。で、もうすこし調べるとmachine.configでワーカープロセスの実行権限を設定できるみたいなので、設定してみる。
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.configファイルを修正する。
- userNameにワーカープロセスを実行させるユーザアカウント
- passwordにそのアカウントのパスワード
<configuration> <system.web> <processModel userName="ユーザ名" password="パスワード" /> </system.web> </configuration>
変更を保存して、IISを再起動させる。Webアプリを動作させるとSSLサイトに問題なくアクセスできた。なるほど、これでアカウントを変更できるのか、でもマシン全体でしかできないのがなんとも。Windows 2003 Serverを使えということかな。
でも、なんでASPNETユーザではSSLサイトにアクセスできないんやろ?
SSLじゃないサイトならASPNETユーザでも普通にアクセスできたのに。う〜ん。