Lucene.NET в среднем доверии - PullRequest
       12

Lucene.NET в среднем доверии

0 голосов
/ 03 декабря 2009

Как мне заставить Lucene.NET 2.3.2 работать в среде среднего доверия? GoDaddy не нравится так, как есть.

Ответы [ 3 ]

1 голос
/ 29 апреля 2011

Я только недавно боролся с этим, и хотел обновить это с решением, которое я получил, чтобы работать. Я собрал последний код и собрал его сам, чтобы при необходимости вносить изменения. В файле 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(), предшествующего этому блоку, но я не уверен.

1 голос
/ 03 декабря 2009

должно работать. Lucene.NET стал совместимым со средой со средним уровнем доверия в коммитах 788091 и 788092 , которые вошли в выпуск 2.3.2. В этом можно убедиться, посмотрев историю тега 2.3.2 с вашим любимым клиентом Subversion .

0 голосов
/ 01 мая 2011

Я только что разместил этот вопрос в группе пользователей 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

...