我正在构建一个ASP.NET MVC网站,我在其中使用Lucene.net进行搜索查询。我 问这里一个问题 关于如何在ASP.NET MVC应用程序中正确构建Lucene.NET的使用情况,并被告知最好的方法是声明我 IndexWriter 作为 public static, ,以便可以重复使用。

这是我的搜索Controller的顶部的一些代码:

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()的一种方法或与静态字段类似的方法?如何解决此错误?

有帮助吗?

解决方案

尝试 HostingEnvironment.MapPath, ,那是 static.

看到这个问题,以确认 HostingEnvironment.MapPath 返回与 Server.MapPath: server.mappath和hostingenvironment.mappath有什么区别?

其他提示

我认为您可以尝试从班级打电话

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

*------------------对不起,我监督,静态功能已经回答了这个问题 通过漂流*

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

更新

我在使用时有例外 System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");

例如,详细信息:system.argumentException:此处不允许使用相对虚拟路径“签名”。在system.web.virtualpath.failifrelativepath()

解决方案(在静态WebMethod中测试)

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top