我正在构建一个使用Lucene.Net进行搜索查询的ASP.NET MVC网站。我在这里提出了一个问题,询问如何在ASP.NET MVC应用程序中正确地组织Lucene.Net的使用方式,并被告知最好的方法是将我的IndexWriter
声明为public static
,以便可以重复使用。
这里是我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);
由于 writer
是静态的,IndexLocation
也必须是静态的。 因此,编译器为 Server.MapPath()
给出以下错误:
需要对象引用才能访问非静态字段、方法或属性“System.Web.Mvc.Controller.Server.get”。
有没有一种方法可以从静态字段中使用 Server.MapPath() 或类似的内容?我该如何修复这个错误?