F#拒绝访问路径

时间:2018-06-13 19:28:19

标签: .net file f#

我已阅读此post。我试图在Windows服务器上将文件从一个地方移动到另一个地方。运行F#程序的用户具有执行.Net File.Move语句的完全权限,我使用文件资源管理器登录服务器的同一用户手动测试了此移动。

我想弄清楚我做错了什么。

以下是相关代码,copyOnlyfalse

let rc =
    try
       if copyOnly then
          File.Copy((currentPath + fnam), (destPath + new_file_dest)) |> ignore
          logH.WriteLine(generateTimeStamp () + ": " + currentPath + fnam + " copied to " + (new_file_dest + fnam))
       else
          File.Move((currentPath + fnam), (destPath + new_file_dest)) |> ignore
          logH.WriteLine(generateTimeStamp () + ": " + currentPath + fnam + " moved to " + destPath + new_file_dest)
                true 
    with ex -> 
       logH.WriteLine(generateTimeStamp () + ": " + "An error occrred trying to move or copy " + currentPath + fnam + " to " + (destPath + new_file_dest))
       printfn "%A" ex
       false
rc

currentPath = \\\\Munis2\\musys_read\\musys\\import_prod\\
fnam = import_arlckbox.007
destPath = \\\\Munis2\\Munis_IC_DataExchange\\archive\\
new_file_dest = import_arlckbox_6132018_15645.007

我很难过为什么这是一个问题。看一下另一篇文章(post),我确实确保我测试的两个用户都拥有所有目录的完全权限,并且我将一个文件移动到另一个目录中的另一个文件名。这是参考文章中的一项决议。

我有第二个与错误有关的问题。如果我尝试使用URL路径语法调试此问题,如上所示,哪个用户尝试在服务器上执行此任务?

用户与Visual Studio中的工作站调试用户相同,还是默认互联网用户处理移动或复制的请求?

我问这个问题,因为在修复了损坏的路径问题之后,我仍然无法使用URL拒绝错误调试路径,但是当应用程序直接在服务器上运行时却没有。

2 个答案:

答案 0 :(得分:1)

我不知道F#但是在Windows应用或Windows Server中你需要使用Application ExecutablePath和Remove bin \ Debug,如图所示

 string startupPath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath) + "\\Templates");

 startupPath = startupPath.Replace("bin\\Debug\\", string.Empty);

 var newfileName2 = Guid.NewGuid() + ".xlsx";

 string destinationPath = Path.Combine(startupPath, newfileName2);

 File.Copy(sourcefile, destinationPath, true);

这是C#代码。发布此代码以了解您的问题

答案 1 :(得分:1)

首先,存在路径问题。部分路径(没有文件名)被复制到带有文件名的完整路径中。一旦应用程序的Access数据库(程序使用的路径源)重新设置为使用标准Windows驱动器路径 - G:\dir1\dir2\file1.007并且修复了无效路径,程序就会恢复正常。 / p>

如果File.Move(或复制)提供更强大的错误,那仍然会很好。