Подтвердить что ты не робот

Использование Server.MapPath() внутри статического поля в ASP.NET MVC

Я создаю сайт ASP.NET MVC, где я использую Lucene.Net для поисковых запросов. я задал здесь вопрос о том, как правильно структурировать использование Lucene.Net в приложении ASP.NET MVC и было сказано, что лучшим методом является объявление 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);

Поскольку writer является статическим, IndexLocation также должен быть статическим. Таким образом, компилятор дает мне следующую ошибку для Server.MapPath():

Ссылка на объект требуется для нестатического поля, метода или свойства 'System.Web.Mvc.Controller.Server.get'

Существует ли способ использования Server.MapPath() или что-то подобное из статического поля? Как я могу исправить эту ошибку?

Спасибо заранее.

4b9b3361

Ответ 2

Я думаю, вы можете попробовать это для вызова из класса

 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/"); Работал