Microsoft Expression Web2でWindows ServerにFTP接続できない
概要
Windows Server 2008のIIS7上にFTPを構築し、Microsoft Expression WebからFTP接続を実施したところ「図1 FTP接続エラーメッセージ」画面が表示されました。
次にコマンドプロンプトから、FTP接続を実施したところ特にエラーもなく、ファイルのダウンロード、ファイルリストの表示、ファイルのアップロードが行えました。
IIS7上のWindows FWログを参照したところ、以下のようなログが表示されていました。
2009-05-05 04:06:30 DROP TCP 192.168.xxx.25
192.168.xxx.161 50914 49240 52 S 3532032116 0 8192 - - - RECEIVE
2009-05-05 04:06:33 DROP TCP 192.168.xxx.25 192.168.xxx.161 50914
49240 52 S 3532032116 0 8192 - - - RECEIVE
上記のログからなぜかMicrosoft Expression Webからのアクセスに、High Portが使用されていることがわかりました。もっとも、通常のWebサーバに対してHigh Portが解放されているとは考えずらく、Webページ作成ソフトウェアであるMicrosoft Expression Webが、そのような構成になっているとも考えにくかったため、クライアント環境を調査することにしました。
対処方法
対処方法として、IEの「インターネットオプション」の「詳細設定」を変更することで、解決することができることができる場合があります。
変更箇所としては、「図2 インターネットオプションの詳細設定」で赤く囲んだ「パッシブFTP(ファイアウォールおよびDSLモデム互換用)を使用する」のチェックを外して「適用」→「OK」をクリックします。
ただし、本設定を外すとパッシブじゃないモードではない接続を行おうとするので、接続ができないこともあるので必要に応じて設定を変更してください。
設定が完了した後に再接続を実施すると、「図3 Expression WebでリモートWebサイトに接続した状態」のようにFTPサーバに接続が可能となりました。
追加の確認事項
Microsoft Expression WebでFTPサーバに接続できないのに、IEのオプションを変更するというのは、若干不思議な気がしたため、以下のような実験をしてみました。
その結果、IEの「図2 インターネットオプションの詳細設定」を設定しない状態だと、「図4 IEによるFTP接続失敗」のようになりました。
また、この時のIIS7側のWindows FWのログには、Microsoft Expression Webの場合とほぼ同じログが表示されていました。
2009-05-05 06:52:13 DROP TCP 192.168.xxx.25
192.168.xxx.161 52618 49332 52 S 3108957585 0 8192 - - - RECEIVE
2009-05-05 06:52:16 DROP TCP 192.168.xxx.25 192.168.xxx.161 52618
49332 52 S 3108957585 0 8192 - - - RECEIVE
次に「図2 インターネットオプションの詳細設定」をIEに実施し、IEを一度閉じた後にもう一度FTP接続を行ったところ、設定変更した後のMicrosoft Expression Webと同じようにIEでも「図5 IEによるFTP接続成功」のようにFTPサーバに接続することができました。
結論
IEとMicrosoft Expression Webがサーバに、FTP接続を実施する際に何を共有しているかというのは、あえて現状は調査をしません。ただ、同じ何か(おそらくWindowsのFTPのAPIあたり?)を使っているものについては同じ状況になるのではないかと思われますが・・・・。
この2つが何を共有しているのかという詳細は不明です。ただ、「図6 Expression WebのリモートWebサイトのプロパティ」の「パシブFTPを使用する」チェックをつけようがつけまいが、同じ動作をすることからこのチェック自体も飾り?なのかもしれない。
最後にIEのFTPモードはIE5.5から、設定が追加されているので。用途に応じて変更する必要があるようです。
IEのFTPの各種設定については、「FTPファイアウォール・フレンドリ・モードに変更する方法」を参照してください。