将新索引添加到代码后,Ravendb 抛出 IndexCompilationException

Ravendb throws IndexCompilationException after new index has been added to code

我添加了最简单的索引,如下所示:

public class MyDocType_ById : AbstractIndexCreationTask<MyDocType>
{
    public MyDocType_ById()
    {
        Map = myDocs => from mine in myDocs
            select new
            {
                Id = mine.Id
            };

        Index(x => x.Id, FieldIndexing.Analyzed);
    }
}

编译并访问我的站点后,出现以下异常:

[IndexCompilationException: Could not find file 'C:\dev\db\ravendb\CompiledIndexCache\-1836739954.u6DpcVRxqMXarC7cwg26Jg%3d%3d.nodebug.dll'.]

我正在使用

在我的应用启动时创建索引
IndexCreation.CreateIndexes(typeof(MyDocType_ById).Assembly, IoC.Container.GetInstance<IDocumentStore>());

在文件夹中创建了一个名为 -1836739954.u6DpcVRxqMXarC7cwg26Jg%3d%3d.nodebug.dll.cs 的文件,但 dll 不存在。

尝试的步骤:

有什么解决办法吗?

彻底的谷歌搜索让我在这里找到了 1 个可能的解决方案(Ayende 还建议检查文件夹权限,确保没有索引 service/antivirus/backup et.c。正在触摸文件夹):https://groups.google.com/forum/#!topic/ravendb/awh7eV00QNE

OP 最终通过重新启动他的机器 解决了这个问题。

这个 也为我解决了这个问题(虽然我确实很好奇重新启动与重新启动所有服务有何不同,et.c...)。

我试图通过添加相同的文档类型 + 索引来重现错误,这次它立即正常工作。唯一剩下的就是希望这种情况永远不会再次发生(尤其是在生产发布期间……)。

更新:这似乎偶尔会发生在我的任何 dev-machines 系统从休眠状态唤醒后 (Windows 10),所以另一个解决方案可能是不休眠你的 dev-machine...