2

こんにちは、ファイルを共有ネットワークにコピーしようとしていますが、引き続きエラーが発生しますThe filename, directory name, or volume label syntax is incorrect。誰かが私が間違っていることをキャッチしてください。また、私のアプリケーションは ASP.NET MVC3 を使用して実行されています。ありがとう!

コードをコピー

File.Copy(@path, @Properties.Settings.Default.SharedMappedOutput);

パスはパラメーターです: C:\log\12345.pdf
Properties.Settings.Default.SharedMappedOutput Path: \\vfler_xx\evl_xx\VT\

やりたいこと: Path(ファイル名) からSharedMappedOutput(ディレクトリ)にファイルをコピーしたい


追加情報

  • Windows Server 2008 R2
  • IIS7.5
  • ASP.NET MVC3 C#

編集
@Steveの助けを借りてコードを変更しましたが、指定しなかったパスへのアクセス権がないと言われています。

String dest_path = Properties.Settings.Default.SharedMappedOutput;
File.Copy(@path, Path.Combine(dest_path, Path.GetFileName(path)));

エラー
Access to the path 'c:\windows\system32\insetsrv\12345.pdf' is denied このパスを指定しませんでした。このパスにアクセスしようとしている理由がわかりません。

新しい問題へのリンク https://stackoverflow.com/questions/16179585/iis-acccess-to-the-path-c-windows-system32-inetsrv-12345-pdf-is-denied


ありがとうございました。質問に不明な点や誤解がある場合はお知らせください。よろしくお願いします。

4

2 に答える 2

2

File.Copy は、ディレクトリを別のディレクトリにコピーするのではなく、ファイル名だけをコピーします。

あなたc:\logは単なるディレクトリの名前のようで、MSDNのドキュメントで述べられているように、これは機能しません

ソース パス内のすべてのファイルをコピーするには、次のように記述します。

string destPath = Properties.Settings.Default.SharedMappedOutput;
foreach (string aFile in Directory.GetFiles(path, "*.*"))
     File.Copy(aFile, Path.Combine(destPath, Path.GetFileName(aFile)));

編集 実際のソース名に関するコメントを見ると、宛先もディレクトリではなくファイル名である必要があるため、答えはまだ部分的に有効です。したがって、答えは次のようになります

string sourceFile = @"C:\log\12345.pdf";
string destPath = Properties.Settings.Default.SharedMappedOutput;
File.Copy(sourceFile, Path.Combine(destPath, Path.GetFileName(sourceFile)));
于 2013-04-23T20:52:16.037 に答える
0

私の記憶が正しければ、これは UNC パスの使用と関係があります。共有をマップされたドライブとしてマップすると、魅力的に機能します。

これは、マップされたドライブに unc パスをマップする例です。 http://www.codeproject.com/Articles/6847/Map-Network-Drive-API

于 2013-04-23T20:55:56.060 に答える