トップ回答者
WebClientクラスによる ファイルのFTPアップロードについて

質問
-
みなさま、こんにちわ!
いつもお世話になります。早速ですが、質問をさせてください。
WebClientクラスでの UploadFileメソッドを使って、FTPによりファイルをアップロード
しています。WebClient wc = new WebClient();
wc.Credentials = new NetworkCredential("user01", "mypassword");
wc.UploadFile("ftp://servername/upload/secret.png", "tmp.png");
ここで、1.正しいユーザー名・パスワードをセットしアップロードする。 → 転送OK
2.不正なユーザー名をセットしアップロードする → 転送エラー
となり、正しい動きと認識しています。
一方、
1.正しいユーザー名・パスワードをセットしアップロードする。 → 転送OK
2.不正なパスワードをセットしアップロードする → 転送OK
となってしまい、パスワードが間違っていても転送が行われているようです。
(ファイルは更新され、例外も発生しません)
しかし、アプリケーションを立ち上げ直し、一度も転送を行う前に 不正なパスワードを
セットしアップロードすると例外が発生します。(正しい動きと思っています)即ち、アプリケーションの中で、一度正しいユーザー名・パスワードでアップロード
すると、それ以降 不正なパスワードでもアップロード可となってしまうようです。但し同様の手順で 不正なユーザー名をセットした場合には例外が発生します。
wc.UploadFile の後、ファイル・クローズのような処理が必要なのかな・・、と思い
色々調べてみましたが、答えが見つかりません。どのような仕組みなのか理解ができていないため、認識に誤りがあるのではと考えています。
何処に間違いがあるのかアドバイスを頂きたく、宜しくお願いします。
回答
すべての返信
-
kozz さん、アドバイス有り難うございました。
テストできる環境が手元になかったため、ご報告が遅くなってしまい、申し訳ありません。
で、色々試してみたのですが、結論として旨く行きませんでした。
(もっとも、間違った事をやっている可能性は否定できませんが・・・)その後、改めて色んな記述を調べてみた所、以下の記述が見つかりました。
----------------------------------------------------------------------------------------------------------------
WebClientクラスでは、細かい設定は指定できず、FtpWebRequestのデフォルトの設定がそのまま
使われているため、FtpWebRequest.KeepAliveプロパティがTrueのため、WebClient.Disposeメソッドを
呼び出してもログアウトしません。
----------------------------------------------------------------------------------------------------------------
という事で、改めてWebRequest/WebResponseクラスを使ってトライしてみる事にします。どうも有り難うございました。
4/13 追記この件は、FTPサーバへの接続/切断、サーバ上のファイルへのアクセスなど、それぞれの仕組みや
扱い方についての必要な知識が不十分で、問題点・質問の詳細を絞りきれません。この辺りを再度勉強し直してから、改めて質問させて頂く事にし、このスレッドは一旦クローズ
させて頂きます。どうも、有りがとうございました。
- 編集済み おおつの井上です。 2011年4月13日 2:05 追記