我正在构建一个ASP.NET MVC站点,我正在使用Lucene.Net进行搜索查询.我在这里问了一个关于如何在ASP.NET MVC应用程序中正确构建Lucene.Net用法的问题,并被告知最好的方法是将my声明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);
Run Code Online (Sandbox Code Playgroud)
由于writer是静态的,IndexLocation也必须是静态的.因此,编译器给出了以下错误Server.MapPath():
非静态字段,方法或属性'System.Web.Mvc.Controller.Server.get'需要对象引用
有没有办法在静态字段中使用Server.MapPath()或类似的东西?我该如何解决这个错误?
我正在研究MVC ASP .NET应用程序.我对两者都比较新.
在控制器中,我试图获取当前登录用户,为此似乎有两种方法:
System.Web.HttpContext.Current.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)
要么
HttpContext.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)
这些有什么区别?据我所知,在MVC框架中,控制器将当前的HttpContext存储为属性,因此这些方法是相同的.那是对的吗?