2011-10-17 4 views
0

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があります。

ありがとうございました。それが失敗したとき、私は答えるだろう最初の質問がある

答えて

-1

問題が解決しなかったため、これが表示されています。コード内で何も変更はありませんが、再起動後すぐに動作します。我々が持っている最良の理論は:私がこれを投稿して以来、移動したオフィスで働いていたクライアントは、移行の一環として、多くのシステムとネットワークポリシーが更新され、新しい環境のためにサーバー設定が調整されました。これらの変更のうちの1つ(または複数)がこの問題を修正した可能性があります。

この理論のさらなるサポート:移動前に、開発VMはWebブラウザを実行できませんでした。 (私は、ブラウザをロードするためにクリックして、それは動作しません、時にはタスクマネージャに表示され、消えます。)オフィス移動後、この問題はもはや発生しません。

したがって、問題を引き起こしたネットワーク設定の可能性がありました。申し訳ありませんが、私はより具体的にすることはできません。

1

は、これらの値はどのようなもの:

  • e.FullPath
  • TARGETDIR
  • fileNameに

チャンスはの一つでありますこれらの値は期待通りではありません。

+0

パスが正しいことを確認し、失敗した時刻と成功した時刻の間に何も変更されていないことを確認しました。(私は誰かにファイルパスを見て、それらが正しいことを確認しました。) –

関連する問題