[c#] ASP.NET MVC의 정적 필드 내에서 Server.MapPath () 사용

검색 쿼리에 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 () 또는 정적 필드에서 비슷한을 사용하는 방법은 ? 이 오류를 어떻게 수정할 수 있습니까?



답변

시도 HostingEnvironment.MapPathstatic.

HostingEnvironment.MapPath다음과 같은 값 을 반환하는 확인은이 SO 질문을 참조하십시오 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 : 여기서 상대 가상 경로 ‘SignatureImages’는 허용되지 않습니다. System.Web.VirtualPath.FailIfRelativePath ()에서

솔루션 (정적 웹 메소드에서 테스트 됨)

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


답변