Asp.net 文件。从IIS创建锁定创建的文件
我有一个运行在IIS 7.5中的ASP.NET,它在本地文件系统上创建文件,然后在创建和删除之间执行一些逻辑后尝试删除。我遇到了这样一种情况,删除操作失败,响应为“进程无法访问文件'C:…\Uploads\c1fe593f-85de-4de1-b5d1-7239e1fc0648_Tulips.jpg'因为它正被另一个进程使用。”“该文件似乎被IIS锁定,我无法删除。以下是创建和删除的代码示例:Asp.net 文件。从IIS创建锁定创建的文件,asp.net,iis,io,Asp.net,Iis,Io,我有一个运行在IIS 7.5中的ASP.NET,它在本地文件系统上创建文件,然后在创建和删除之间执行一些逻辑后尝试删除。我遇到了这样一种情况,删除操作失败,响应为“进程无法访问文件'C:…\Uploads\c1fe593f-85de-4de1-b5d1-7239e1fc0648_Tulips.jpg'因为它正被另一个进程使用。”“该文件似乎被IIS锁定,我无法删除。以下是创建和删除的代码示例: // File.WriteAllBytes(path, rawData); // this seems
// File.WriteAllBytes(path, rawData); // this seems to leave the file open!
using (var file = File.Create(path))
{
file.Write(rawData, 0, rawData.Length);
file.Close(); // should close when it goes out of scope, but just to be safe
}
是否有一些特殊选项需要传递到File.Create中?如何解决这个问题?File.writealBytes(路径,rawData)假设您传递的路径参数是唯一的,并且您没有一个写入请求和另一个试图同时读取请求的并发请求,那么代码>应该可以正常工作。为了确保这一点,如果可能发生这种情况,您可以使用来同步访问。还要确保代码中没有其他部分可能泄漏文件句柄
看看哪个可以让你确切地知道这个文件句柄泄露的地方。结果证明我是个傻瓜。我忘了清理另一个控制它的资源。我的错。