Domanda

Sto costruendo un sito ASP.NET MVC in cui sto usando Lucene.Net per le query di ricerca. I fatto una domanda qui su come strutturare correttamente l'utilizzo Lucene.Net in un'applicazione ASP.NET MVC e mi hanno detto che il metodo migliore è quello di dichiarare la mia IndexWriter come public static, in modo che possa essere riutilizzato.

Ecco alcuni codice che è in cima alla mia SearchController:

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);

Come writer è statico, IndexLocation deve essere statico. Così, il compilatore mi sta dando il seguente errore per Server.MapPath():

  

È necessario un riferimento all'oggetto per il campo non statico, metodo o proprietà 'System.Web.Mvc.Controller.Server.get'

C'è un modo di utilizzare Server.MapPath () o qualcosa di simile da un campo statico ? Come posso risolvere questo errore?

È stato utile?

Soluzione

HostingEnvironment.MapPath , che è static.

Vedere questa domanda SO la conferma che HostingEnvironment.MapPath restituisce lo stesso valore come Server.MapPath: Qual è la differenza tra Server.MapPath e HostingEnvironment.MapPath?

Altri suggerimenti

Penso che si può provare questo per chiamare a partire da una classe

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

* ---------------- Mi dispiace di supervisione, per la funzione statica già risposto alla domanda di deriva *

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

Aggiorna

ho ottenuto un'eccezione durante l'utilizzo System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");

Ex dettagli: System.ArgumentException: percorso 'SignatureImages' virtuali relativi non sono concessi qui. a System.Web.VirtualPath.FailIfRelativePath ()

Solution (testato in webmethod statico)

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top