2016-07-09 14 views
1

Ich bekomme Lock obtain timed out Ausnahme mit völlig leeren Indexordner."Sperre erhalten Zeitüberschreitung Ausnahme" ohne "write.lock" Datei

Diese Ausnahme wirft im Moment versuche ich, einen Index mit folgendem Code zu erstellen:

IndexWriter writer = new IndexWriter(directory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED) 

Wie könnte ich diesen Fehler beheben?

+0

wurde das Verzeichnis von dem gleichen Benutzer wie der Prozess erstellt, um es zu öffnen? – AndyPook

Antwort

1

Es gibt mehrere mögliche Ursachen:

  1. Ihr Verzeichnis nicht genügend Zugriff hat. Um dies zu beheben, klicken Sie mit der rechten Maustaste auf das Verzeichnis> Eigenschaften> Sicherheit> vergewissern Sie sich, dass Ihr Prozess IIS_IUSRS über Berechtigungen verfügt
  2. Ein anderer Prozess verwendet das Verzeichnis zur gleichen Zeit. Verwenden Sie Lock Hunter, um zu erkennen, welcher Prozess diese Datei verwendet
  3. Der write.lock in dem Verzeichnis ist eine verwaiste Datei. Ursprünglich wurde er erstellt, aber aufgrund des Prozesses wurde er gelöscht.
  4. Sie sind nicht Optimierung/commiting/den Verfasser abzustoßen, die Sie

geöffnet haben Schriftsteller zu begehen/entsorgen:

writer.Optimize(); 
writer.Commit(); 
writer.Dispose(); 

ich dieses Problem hatte dann eine Instanz von IProviderContext hatte, die nicht zu sein war optimiert/bestimmt/entsorgt.

Ich hoffe, dies wird Ihr Problem lösen