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

StackOverflow https://stackoverflow.com/questions/3795986

Вопрос

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

Увидеть это так вопрос для подтверждения того, что HostingEnvironment.MapPath возвращает одинаковое значение, что и Server.MapPath: В чем разница между server.mappath и hostingenvironment.mappath?

Другие советы

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

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

*------------------ Извините, я надзор, для статической функции уже ответил на вопрос по Adrift *

System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");

Обновлять

У меня есть исключение во время использования System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");

EX Подробности: System.argumentException: Относительный виртуальный путь «подписи» здесь не допускается. на System.Web.virtualPath.failifrelativePath ()

Решение (проверено в статическом webmethod)

System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/"); Работал

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top