一年前,当我们开始使用RavenDB时,我们很快就在生产中遇到了这个错误:
操作失败:无法访问文件,文件被锁定或正在使用
我们通过一些论坛发现,我们可以通过不将RavenDB作为IIS网站运行,但作为一项服务来摆脱这种情况。我们做了,再也没见过错误。
到现在为止:我正在建立一个新的环境并思考,我会在IIS上运行RavenDB,但错误会很快再次出现。
事实和我尝试过的事情:
Raven/WorkingDir
AppSetting)当网站运行几分钟时,错误会随机发生。尝试使用以下命令恢复备份时也会发生此错误:
C:\ RavenDBExecutables \ Server \ raven.Server.exe --restore-source = c:\ SOME_PATH \ my-db-backup.raven --restore-database-name = my-db --restore-database = http://localhost:8080
(RavenDBExecutables文件夹只是二进制文件/可执行文件等的压缩文件 - 它与IIS网站文件夹不重叠)
运行还原时,会创建以下文件夹:
导入失败后,如果我访问http://localhost:8080/docs/Raven/Restore/Status,我会
*许多行如"复制PATH_TO_INDEX_FILE",*
" Esent Restore:失败!无法恢复数据库!", " Microsoft.Isam.Esent.Interop.EsentFileAccessDeniedException:无法访问文件,文件被锁定或正在使用\ r \ n at Microsoft.Isam.Esent.Interop.Api.Check(Int32 err)\ r \ n at Microsoft.Isam.Esent.Interop.Api.JetRestoreInstance(JET_INSTANCE instance,String source,String destination,JET_PFNSTATUS statusCallback)\ r \ n at Raven.Database.Storage.Esent.Backup.RestoreOperation.Execute()&#34 ;, "无法恢复数据库无法访问文件,文件被锁定或正在使用"
那又怎样呢?
答案 0 :(得分:0)
发生这种情况的原因是IIS默认情况下会重叠回收。 这意味着应用程序的两个版本都在运行(并且两者都在尝试使用相同的资源)。 将重叠的再循环设置为false,这不应该发生。 当用户将两个数据库设置为同一路径时,我们已经看到类似的错误