各位大大们,小弟弟今天遇到一个问题,百思不得其解,问题如下:
我创建了一个web工程,然后添加了一个Global的文件,在Application_start中添加了如下代码
if (!Directory.Exists(LockFileFolder))
{
Directory.CreateDirectory(LockFileFolder);
}
else
{
Directory.Delete(LockFileFolder, true);
Directory.CreateDirectory(LockFileFolder);
}
目的的话就是想,判断LockFileFolder是否存在,存在的话删除它,然后再创建一个新的,不存在就直接创建,本地测试没有问题,但是上传到IIS遇到了一个问题,就是每次重新启动IIS,调用了Global,然后文件夹被删除后,没有创建新的同名文件夹。。。。
分析:
1.以为是权限问题,我在代码中加入另一段创建另一个文件夹的代码,发现该文件夹被创建了,不是权限问题
2.以为else中的Directory.CreateDirectory(LockFileFolder);没有执行,我在Directory.Delete(LockFileFolder, true);和Directory.CreateDirectory(LockFileFolder);后都打印了Log,也没有问题。
3.最后在网上搜索,感觉可能是资源释放的问题,在Delete后sleep几秒后,就能创建了。
求:请问,这个问题到底是什么引起的?有没有什么更好的解决方法,分不多,望见谅,谢谢各位~
我觉得你没必要删除那个文件夹,既然要新建干嘛要删除了...
你删除这个文件夹的目的可能就是想把里面的子文件或子文件夹都删除了.
其实你可以判断 存在该文件夹:就删除该文件夹下的所有文件.
不存在该文件夹: 才新建这个文件夹.
不知道这样符不符合你的需求.
之前因为考虑也是这个文件夹里面有很多文件,而且每次IIS重启都不需要这些文件,所以懒得遍历去删除文件,所以就直接用这个Directory.Delete(LockFileFolder, true);方法了,你说的这个方法是我现在做的,暂时没有问题,可是就是不知道为什么,会出现删除完以后再创建会不行这个问题,本地是可以的啊,是不是这里面有什么坑~
我想最快的方式是用2个DirectoryInfo对象把,因为很有可能是进程被暂用了,在Delete(LockFileFolder, true)这句后面重新new一个对象出来var directoryInfo=new DirectoryInfo(“LockFileFolder”),在创建
谢谢啦,我暂时找到了其他方法,和二楼说的差不多