簡體   English   中英

Lucene.NET具有中等信任度

[英]Lucene.NET in medium trust

如何使Lucene.NET 2.3.2在中等信任環境中運行? GoDaddy不喜歡這樣。

它應該工作。 788091788092提交中使 Lucene.NET與中等信任環境兼容 ,該提交在2.3.2版本中發布。 您可以通過使用喜歡的Subversion客戶端查看2.3.2標記的歷史記錄來驗證這一點。

我剛剛為此苦苦掙扎,並想用我能使用的解決方案來更新它。 我下載了最新代碼並自己構建了它,以便可以根據需要進行更改。 在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()調用的行為,但是我不確定。

我剛剛在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)構建的,無法訪問Flush方法的重載,該方法用於確保所有內容都被刷新到磁盤:

http://web.archiveorange.com/archive/v/3k9XU33O4yJyW15fWfMd#MhNDlmKgnUj5fOj

由於您現在在.NET 4.0中工作,因此您應該能夠在SupportClass.cs中替換以上代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM