tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

C# の FTP で認証エラー

ちょっと前に、自分で書いた C# のアプリで FTP の送り先を変えたのだけど、それから散発的に FTP のエラーが発生して悩んでた。

で、検索してみたら、こんなのが。
FTP受信中にエラー - Insider.NET

おそらくは認証の問題です。
接続先サーバーもネットワーク構成もわかりませんので、
確実にこれで治ります、とは言えませんが、
少なくともNetworkCredentialの使い方が間違っています。
(中略)
ループ開始時にNetworkCredentialインスタンスを一つ作成し、
それをすべてのFTPWebRequestで共有するようにするのが正しい方法です。

え゛ーーー。これ本当なのかなぁ。自分の場合、転送部分を1個のクラスにしてて、その外側でループさせてるから、Credential の共有が大変なんだけど。コンストラクタ書き換えるのとか嫌だし。

つーことで、NetworkCredential をクラスの static メンバにして、null な時(事実上初回)だけ初期化するように変更。コードが汚くて嫌すぎるんだけど。。。まあ仕方ないのかな。

つーか、なんで以前は問題起こらなかったんだろ?謎です。