在ASP.NET MVC的静态字段中使用Server.MapPath()
我正在构build一个ASP.NET MVC网站,我正在使用Lucene.Net进行search查询。 我在这里提出了一个关于如何在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()或类似的静态字段 ? 我该如何解决这个错误?
提前致谢。
尝试HostingEnvironment.MapPath
,它是static
。
看到这个SO问题,以确认HostingEnvironment.MapPath
返回与Server.MapPath
相同的值: Server.MapPath和HostingEnvironment.MapPath有什么区别?
我想你可以试试这个从class上打电话
System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/");
* —————-对不起,我忽略了,因为静态函数已经通过adrift *
System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");
更新
我使用System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");
详细信息:System.ArgumentException:相对虚拟path“SignatureImages”不允许在这里。 在System.Web.VirtualPath.FailIfRelativePath()
解决scheme(在静态webmethod中testing)
System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/");
工作