我收到了一个未经授权的访问例外
如果它有帮助,这是异常发生的代码:
protected void DeleteImage(string imageName)
{
if (imageName != null)
{
string f = String.Format("~/Images/{0}", imageName);
f = System.Web.Hosting.HostingEnvironment.MapPath(f);
if (File.Exists(f))
{
if (f != null) File.Delete(f);
}
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
Bra*_*rks 25
我遇到了同样的问题,发现编写自己的Directory.Delete包装器修复了它.默认情况下这是递归的:
using System.IO;
public void DeleteDirectory(string targetDir)
{
File.SetAttributes(targetDir, FileAttributes.Normal);
string[] files = Directory.GetFiles(targetDir);
string[] dirs = Directory.GetDirectories(targetDir);
foreach (string file in files)
{
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
}
foreach (string dir in dirs)
{
DeleteDirectory(dir);
}
Directory.Delete(targetDir, false);
}
Run Code Online (Sandbox Code Playgroud)
如果目录包含只读文件,则不会使用Directory.Delete删除该文件.这是MS的愚蠢实施.
我很惊讶没有人在互联网上建议这种方法,删除目录而不通过它递归并更改每个文件的属性.这是:
Process.Start("cmd.exe", "/c " + @"rmdir /s/q C:\Test\TestDirectoryContainingReadOnlyFiles");
Run Code Online (Sandbox Code Playgroud)
(稍微更改一下,不要暂时触发cmd窗口,这可以通过互联网获得)
归档时间: |
|
查看次数: |
18351 次 |
最近记录: |