null в этой ситуации, вы работаете за пределами веб-запроса (т.е. в тесте)?

аюсь получить путь к папке в корне моего сайта и сохранить его в свойстве класса, когда вызывается мой конструктор контроллера:

public TestController:Controller{
    string temp;

    public TestController(){
        temp = "";
        }

    }

Я пробовал следующее:

temp = Server.MapPath("~/TheFolder/"); // Server is null - error.
temp = Request.PhysicalApplicationPath + @"TheFolder\"; // Request is null - error.

Есть идеи?

Ответы на вопрос(3)

Решение Вопроса

йта. Так:

temp = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TheFolder");

(Обновление благодаря комментарию Марка Гравелла)

 Anuj Pandey30 дек. 2013 г., 12:37
это возвращает каталог временной папки, и это может означать совершенно неправильную папку.
 Rakesh patanga10 авг. 2014 г., 16:12
удачное решение!
 Marc Gravell♦22 янв. 2009 г., 09:34
Path.Combine будет лучше ;-p

не нужно, пока не начнется цикл главной страницы, подумайте об отсрочке - просто используя обычное свойство; что-то вроде

public string BasePath {
    get { return Server.MapPath("~/TheFolder/"); }
}

Тогда, когда это используется во время цикла страницы, все должно быть хорошо. Вы можете кэшировать его, если выдействительно хочу, но я не думаю, что это будет узким местом:

private string basePath;
public string BasePath {
    get {
        if(basePath == null) basePath = Server.MapPath("~/TheFolder/");
        return basePath;
    }
}
 Raleigh Buckner22 янв. 2009 г., 16:28
Это хорошая идея. Я мог бы в конечном итоге пойти по этому пути позже. Спасибо!

но он должен выглядеть примерно так:

base.[Controller?]Context.HttpContext.Server.MapPath();

Если серверВсе еще null в этой ситуации, вы работаете за пределами веб-запроса (т.е. в тесте)?

Ваш ответ на вопрос