如何在中等信任环境中运行Lucene.NET 2.3.2? GoDaddy不喜欢它。
答案 0 :(得分:1)
它应该工作。 Lucene.NET was made compatible在提交788091和788092中具有中等信任环境,进入2.3.2版本。您可以通过查看2.3.2 tag与您最喜欢的Subversion客户的历史记录来验证这一点。
答案 1 :(得分:1)
我最近一直在努力解决这个问题,并希望用我开始工作的解决方案来更新它。我下载了最新代码并自行构建,以便我可以根据需要进行更改。在SupportClass.cs文件中,从第481行开始,有一些代码用于验证是否使用非托管代码刷新了文件缓冲区。
if (OS.IsWindows)
{
if (!FlushFileBuffers(fileStream.Handle))
throw new System.IO.IOException();
}
else if (OS.IsUnix)
{
if (fsync(fileStream.Handle) != IntPtr.Zero)
throw new System.IO.IOException();
}
else
{
throw new NotImplementedException();
}
我注释掉了这些线并重建了库,并且能够以中等信任的方式运行。我以中等信任的方式在本地运行,并将一个简单的测试应用程序部署到GoDaddy。我不确定删除这些行的含义是什么。它们似乎重复了此块之前的fileStream.Flush()
调用的行为,但我不确定。
答案 2 :(得分:0)
我刚刚在lucene用户群中发布了此问题,建议您使用以下内容: -
public static void Sync(System.IO.FileStream fileStream)
{
if (fileStream == null)
throw new ArgumentNullException("fileStream");
//Will only compile with .net 4.0
fileStream.Flush(true);
}
来自用户组电子邮件的引用: -
然而,当时,Lucene.NET是 建立在.NET 2.0(IIRC)上并没有 有权访问过载 用于的冲洗方法 保证一切都被冲到了 盘:
http://web.archiveorange.com/archive/v/3k9XU33O4yJyW15fWfMd#MhNDlmKgnUj5fOj
由于您现在在.NET 4.0中工作, 你应该能够取代 以上SupportClass.cs中的代码