将tempfile移动到另一个文件夹使其无法访问

时间:2010-11-17 15:13:58

标签: .net asp.net windows

在我的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(),这似乎可以解决问题。但这感觉就像是一种非常肮脏的做事方式。

2 个答案:

答案 0 :(得分:0)

该应用程序可能正在占用该文件。

您可能需要释放资源。很难从你的代码片段中准确地告诉你如何处理文件,但尝试tempfile.Dispose()之类的内容。

答案 1 :(得分:0)

您描述的行为是设计的:

Moving a file does not recalculate inherited permissions.

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