2009-05-31 6 views
0

IISからアプリケーションを実行するときにのみ問題が発生します。IIS7のASP.NETアプリケーションからのFTPが失敗する

私は自分のASP.NETアプリケーションから外部サイトにFTPしようとしています。

私は一般的にサーバーからFTPできますが、私のアプリケーションからはFTPできません。 私のリクエストがタイムアウトしました。

私のウェブサイトの所有者は、フルコントロールのIIS_IUSRSユーザーに設定されました。

誰でも私の成功を妨げているかもしれません。

どのようなヘルプも非常にうまくいくでしょう。

私の期限は12時間以内であると私はroyalyねじ込まれています...

答えて

0

クイックフィックスは、IISがあなたのユーザーアカウントの代わりに、(IIS)でIUSRアカウントに使用する匿名ユーザーを設定することができます。それは許可の問題のようです。

2番目の賭けは、Wiresharck/Etherrealのようなツールを使用して、FTPサイトへの接続が行われていることを確認し、そこからデバッグすることです。

+0

返信ありがとうございますThies –

0

私は、ソリューション

Windowsファイアウォールと非セキュアFTPトラフィック

Windowsファイアウォールは、netshコマンドを使用して、コマンドラインから設定することができます

を発見しました。 2の簡単なステップは、許可するように設定Windowsファイアウォールに必要とされているファイアウォールの非セキュアFTPトラフィック

1)を開き、ポート21

プロトコルを許可=ルール名=「FTP(SSLなし)」アクションを追加ファイアウォール

のnetshをadvfirewall =次に、localportにおけるTCPのDIR = = 21

2)は、データ接続のために動的にポートを開く

グローバルStatefulFtpセットのnetshをadvfirewallは

を可能にするFTP(別名ステートフルFTP)のファイアウォールアプリケーションフィルタをアクティブIそれが何をしたのか分かりませんが、それはそのトリックでした。

+0

FTPはデータを転送する際に複数のポートを使用します。最初はコマンド用の通信チャネルを開きますが、FTPで使用される動的ポートのために、2番目はFTPトラフィックを監視し、必要に応じて追加ポートを開きます。 質問:これはアプリケーション内以外のすべてで機能していたのはなぜですか? FTPテストを行ったのと同じマシンで稼働していませんでしたか? – Thies

0

同じ問題が解決しましたUsePassive。おそらく、ファイアウォールにFTP用のポート20,21を追加することができます(私にとっては不可欠です)。

FtpWebRequest reqFTP; 
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(@"ftp://ftp.example.com/")); 
reqFTP.UseBinary = true; 
reqFTP.Credentials = new NetworkCredential("user", "password"); 
reqFTP.Proxy = null; 
reqFTP.KeepAlive = false; 
reqFTP.UsePassive = true; 
関連する問題