【问题标题】:Directory.Move() works in debug mode, but not when deployedDirectory.Move() 在调试模式下工作,但在部署时不工作
【发布时间】:2010-08-20 15:56:20
【问题描述】:

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

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

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

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

为什么会这样?

【问题讨论】:

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


    【解决方案1】:

    这很可能是权限问题。

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

    编辑:

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

    【讨论】:

    • 您将如何设置删除权限?据我所知,如果我有写权限,我也有删除权限。要更改别名目录的权限,我执行以下操作: 1) 右键单击​​文件夹,然后选择“共享和安全”。 2) 单击“网络共享”选项卡,然后单击“编辑权限” 3) 在出现的表单上,我只看到“读取”、“写入”……,但没有看到“删除”。我找错地方了吗?
    • TBH 我不确定从 Web 共享选项卡授予写入权限是否也授予删除权限。我希望它可以,但是您应该能够通过查看“安全”选项卡上各个用户/组的权限来仔细检查。我上面引用的权限来自“安全”选项卡的“高级”对话框。
    【解决方案2】:
    • 确保文件夹未处于写保护状态,并且在您尝试移动文件夹时没有进程正在访问任何文件。

    • 还可以通过验证应用程序池在哪个用户帐户下运行来检查您是否将安全权限授予正确的用户。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-16
        • 2014-12-09
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        • 2013-11-28
        • 2018-07-31
        • 1970-01-01
        相关资源
        最近更新 更多