4

2 つのファイル共有に接続し、データ フィード用にいくつかのファイルをコピーする必要があるジョブがあります。

ソース サーバーはドメインのネットワーク上にあり、正常に動作します。ただし、リモートサーバーは私を窒息させ、「パスの一部が見つかりませんでした」というエラーをスローします。送信先サーバーが送信元サーバーとは異なるドメインにあることを追加する必要があります。

ソースと宛先のパスは app.config ファイルから読み取られます。

ドライブの永続的なマッピングが機能すると思っていましたが、これはスケジュールされたタスクであるため、機能していないようです。NET USE を使用することも考えましたが、それはユーザー名とパスワードを取得するのが好きではないようです。

本当に奇妙なことに、マシンにログインしているときにジョブをダブルクリックすると、正常に実行されます。

サンプルコード:

DirectoryInfo di = new DirectoryInfo(srcPath);

        try
        {

            FileInfo[] files = di.GetFiles();

            foreach (FileInfo fi in files)
            {
                if(!(fi.Name.Contains("_desc")))
                {
                    Console.WriteLine(fi.Name + System.Environment.NewLine);
                    File.Copy(fi.FullName, destPath + fi.Name, true);
                    fi.Delete();
                }
            }
        }

明らかに、これはファイルをコピーするほど単純ではありません。C# 4.0 で資格情報を使用してドライブをマッピングすることに関する提案はありますか?

編集

プログラムの実行中にドライブをマップするコンソール アプリケーションから呼び出されるバッチ ファイルを使用しようとしています。それが朝にうまくいくかどうか、私は確かに知っています。

4

2 に答える 2

1

私が最終的にやったのは、プログラムによって呼び出されるバッチファイルでドライブをマッピングすることでした。コマンドを起動NET USEし、マッピングが完了するまで数秒間一時停止します。

ユーザーがログアウトしている間、マップされたドライブの周りにコンテキストがないように見えます。

于 2012-08-01T12:18:03.283 に答える
1

FTP などの適切なファイル転送プロトコルを調べることをお勧めします。

それが問題外であると仮定して、 のような UNC パスを使用してみてください\\servername\path\file.txt。資格情報は引き続き必要ですが、アプリケーションを実行しているアカウントにそれらのアクセス許可があると仮定すると、問題ありません。あなたが web.config ファイルに言及していることを考えると、それは ASP.NET アプリケーションであると推測しているため、IIS でアプリケーション プールを実行するアカウントを意味します。http://learn.iis.net/page.aspx/624/application-pool-identities/を参照してください。

于 2012-07-26T14:03:11.983 に答える