Directory.Move()在调试模式下工作,但在部署时不工作

时间:2010-08-20 15:56:21

标签: c# .net asp.net web-applications

我有一个webapp,它具有对别名目录的读/写/执行权限。当我在Visual Studio中处于调试模式时,以下语句有效:

Directory.Move("\\\\localhost\\Alias\\oldDirectory","\\\\localhost\\Alias\\newDirectory");

最终结果是,oldDirectory现在是别名目录中的newDirectory

但是,当我在预生产中测试此代码时,我在别名目录中有oldDirectorynewDirectoryDirectory.Move现在表现得好像只是将oldDirectory复制到newDirectory

为什么会这样?

3 个答案:

答案 0 :(得分:3)

这很可能是权限问题。

执行此命令的用户帐户可能具有“创建/写入”权限,但不具有别名目录中的“删除”权限。我会检查程序正在执行的用户帐户是否具有删除/删除子文件夹和文件权限。

修改

为了测试这个理论,我会暂时授予Users组对该文件夹的完全控制权,以查看问题是否消失。

答案 1 :(得分:0)

  • 确保文件夹没有写保护,并且在您尝试移动文件夹时没有任何进程正在访问任何文件。

  • 同时通过验证应用程序池正在运行的用户帐户,检查您是否向正确的用户授予了安全权限。

  • 您可能还想考虑在本地IIS上进行开发以防止将来发生此类情况(我去过那里;不太好)

答案 2 :(得分:0)

我相信,而不是使用Directory(这是静态的)我使用DirectoryInfo解决了我的问题。我认为问题的核心是DirectoryDirectoryInfo的实例做更多的安全检查。我仍然不清楚为什么会这样,但它似乎有效。