在ASP.NET MVC中的静态字段中使用server.mappath()
-
05-10-2019 - |
题
我正在构建一个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/");
工作