【问题标题】:Moving tempfile to other folder makes it unaccessible将临时文件移动到另一个文件夹使其无法访问
【发布时间】:2010-11-17 15:13:57
【问题描述】:

在我的 Windows Server 2008 上的 asp.net 应用程序中,我有这样的代码

tempfile = Path.GetTempFileName()
... Write data to tempfile ...
File.Move(tempfile, storageDir + fileName)

这很好用。当我尝试从 ASP.NET 外部访问文件时,问题就出现了。我被拒绝访问,即使我正在访问的用户对 storageDir 文件夹具有(递归)读取权限。

似乎被移动的文件没有从它被移动到的文件夹中继承权限。这是正确的吗?如果是,有没有简单的方法可以解决这个问题?

现在作为直接修复,我已将 ASP.NET 应用程序中的每个 File.Move() 实例更改为 File.Copy() + File.Delete(),这似乎可以解决问题。但这感觉像是一种非常肮脏的做事方式。

【问题讨论】:

    标签: .net asp.net windows


    【解决方案1】:

    您描述的行为是设计使然:

    Moving a file does not recalculate inherited permissions.

    我认为您已经描述了解决此问题的最简单方法:“复制和删除”而不是“移动”。

    【讨论】:

      【解决方案2】:

      应用程序可能占用了文件。

      您可能需要释放资源。很难从您的代码 sn-p 中准确判断您是如何处理文件的,但请尝试使用类似 tempfile.Dispose() 的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-02
        • 2021-08-28
        • 1970-01-01
        • 1970-01-01
        • 2021-10-03
        • 2022-10-25
        • 1970-01-01
        相关资源
        最近更新 更多