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(目录)


额外的信息

  • 视窗服务器 2008 R2
  • IIS 7.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 回答