Buduję witrynę ASP.NET MVC, w której używam Lucene.Net do wyszukiwania zapytań. I asked a question here o tym, jak poprawnie zaprojektować wykorzystanie Lucene.Net w aplikacji ASP.NET MVC i powiedziano mi, że najlepszą metodą jest zadeklarowanie mojego IndexWriter
jako public static
, aby mógł być ponownie użyty.Używanie Server.MapPath() wewnątrz statycznego pola w ASP.NET MVC
Oto kod, który jest na szczycie mojej 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);
Jak writer
jest statyczna, IndexLocation
musi być statyczna. Zatem, kompilator daje mi następujący błąd na Server.MapPath()
:
Odwołanie do obiektu jest wymagane dla pola non-statyczne, metoda lub właściwość „System.Web.Mvc.Controller.Server.get”
Czy istnieje sposób korzystania z Server.MapPath() lub coś podobnego ze statycznego pola? Jak mogę naprawić ten błąd?
Z góry dziękuję.
Funkcja ta dała mi błąd w rezultacie returbed przez HostingEnvironment.MapPath nie tak samo jak Server.MapPath, ten drugi zwraca bezwzględny adres URL, a nie względny adres URL: – John
@john, otrzymuję tę samą wartość dla obu. – ps2goat