C#/ VS2008/.NET3.5でFileSystemWatchersでFTPディレクトリの一部を監視し、ファイルを別の場所に移動して処理するWindowsサービスを作成しました。私は今日、サービスが起動した直後に「パラメータが間違っている」というエラーが表示されることに気付きましたが、数分待っても問題なくファイルがコピーされます。私は、エラーメッセージが頻繁に不正なアクセス許可に関連しているのを見ましたが、ディレクトリ(ターゲットとソース)のアクセス許可が正しいことを確認しました。ファイルがにロードされたディレクトリに関する情報をWindowsサービスでファイルを移動するときに「パラメータが正しくありません」
//found the correct source path
string targetDir = dir.TargetDirectory;
string fileName = Path.GetFileName(e.FullPath);
errorlocation = "move file";
string targetFilePath = Path.Combine(targetDir, fileName);
if (File.Exists(targetFilePath))
{
File.Delete(targetFilePath);
}
File.Move(e.FullPath, Path.Combine(targetDir, fileName));
dirはを参照し、オブジェクト:
は、ここでファイルをFTPディレクトリにコピーが終了したとき、監視されている呼び出されるコードの抜粋です。 eはFileSystemEventArgsです。新しいファイルをどこにコピーするかをサービスに伝えるapp.configのカスタム設定ブロックで、ディレクトリの設定からTargetdirを取得します。
私はここにコードを含めませんでしたが、ステップをトレースするために作成したEventLogエントリのため、File.Move(上の最後の行)でエラーが発生していることがわかりました。
サービス開始後にすぐに移動に失敗する理由はありますか?
いくつかの光を放つ場合のプロセスの基本的な概要:外部ベンダーが毎日複数のファイルをFTPで送信します。ファイルが入ってくると、私のコードはFTPディレクトリに基づいてファイルが来る人を特定し、ファイルを解析して保存するSSISジョブに渡す設定を読み込みます。 SSISジョブのための独自の構成設定を持っていて、おそらくそれぞれ現在監視されているダースまたはそれ以上のディレクトリがあります。システムが起動時に混乱し、すべての設定を入力するのにちょっと時間がかかる可能性はありますか?各ソースディレクトリには独自のFileSystemWatcherがあります。
ありがとうございました。それが失敗したとき、私は答えるだろう最初の質問がある
パスが正しいことを確認し、失敗した時刻と成功した時刻の間に何も変更されていないことを確認しました。(私は誰かにファイルパスを見て、それらが正しいことを確認しました。) –