Frage

Ich baue eine Website ASP.NET MVC, wo ich bin mit Lucene.Net für Suchanfragen. Ich stellte eine Frage hier darüber, wie, wenn man so richtig Lucene.Net Verwendung in einer ASP.NET MVC-Anwendung strukturieren und ich wurde gesagt, dass die beste Methode, um die meine IndexWriter als public static zu erklären ist, dass es wiederverwendet werden kann.

Hier ist ein Code, der an der Spitze meines SearchController ist:

public static string IndexLocation = Server.MapPath("~/lucene");
public static Lucene.Net.Analysis.Standard.StandardAnalyzer analyzer = new Lucene.Net.Analysis.Standard.StandardAnalyzer();
public static IndexWriter writer = new IndexWriter(IndexLocation,analyzer);

Als writer statisch ist, IndexLocation müssen auch statisch sein. Somit wird der Compiler mir die folgende Fehlermeldung für Server.MapPath() geben:

Eine Objektreferenz für die nicht-statisches Feld erforderlich, eine Methode oder eine Eigenschaft ‚System.Web.Mvc.Controller.Server.get‘

Gibt es eine Art und Weise der Verwendung von Server.MapPath () oder etwas ähnlichem von einem statischen Feld ? Wie kann ich diesen Fehler beheben?

War es hilfreich?

Lösung

Versuchen Sie HostingEnvironment.MapPath , die static ist.

Sehen Sie diese Frage SO für die Bestätigung, dass HostingEnvironment.MapPath den gleichen Wert wie Server.MapPath zurückgibt: Was ist der Unterschied zwischen Server.MapPath und HostingEnvironment.MapPath ist?

Andere Tipps

ich glaube, Sie können versuchen, diese für den Aufruf in einer Klasse

 System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/");

* ---------------- Sorry, ich Aufsicht, für statische Funktion bereits beantwortet die Frage von adrift *

System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");

Aktualisieren

Ich habe Ausnahme bei der Verwendung von System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");

Ex Details: System.ArgumentException: Der relativ virtuelle Pfad 'SignatureImages' ist hier nicht erlaubt. bei System.Web.VirtualPath.FailIfRelativePath ()

Solution (getestet in statischer Webmethod)

System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/"); Arbeitet

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top