Невозможно использовать Server.MapPath

111

Что мне нужно сделать, чтобы заставить Server.MapPathработать?
у меня естьusing System.Web;

что еще? Когда я печатаю, Serverнет опции быстрого результата (intelli-sense) для Server.

Любая помощь?

a1204773
источник
1
Вам необходимо предоставить дополнительную информацию. Что это за проект? Почему вы хотите запустить Server.MapPath? Это проект веб-форм, и вы пишете код в подклассе страницы или в функции рендеринга ASPX?
Дай
C # Winforms .. я хочу, чтобы он проверял наличие файлов на сервере
a1204773

Ответы:

286

вы можете попробовать использовать это

    System.Web.HttpContext.Current.Server.MapPath(path);

или используйте HostingEnvironment.MapPath

    System.Web.Hosting.HostingEnvironment.MapPath(path);
DotNetUser
источник
1
Они не работают .... Ошибка 1 Тип или имя пространства имен «HttpContext» не существует в пространстве имен «System.Web» (отсутствует ссылка на сборку?) ... Ошибка 2 Тип или имя пространства имен «Хостинг» не существует в пространстве имен System.Web
a1204773
похоже, вы используете winforms, возможно, вы захотите увидеть эту ссылку, а затем debugging.com/bug/18951
DotNetUser
4
У меня тоже HostingEnvironment.MapPath работал, и я использую его вне контроллера.
Люк
Прежде всего, ваш проект должен ссылаться на System.Web.dll, и он будет работать
ihebiheb
Как получить доступ к файлу, находящемуся в этом каталоге "~ / AppData / Roaming"?
Murlidhar Fichadia
14

Ваш проект должен ссылаться на сборку System.Web.dll. Сервер - это объект типа HttpServerUtility. Пример:

HttpContext.Current.Server.MapPath(path);
Леандро Гомиде
источник
3
Не могу найти такую ​​ссылку. Я нашел только эти две: System.Web.ApplicationServices, System.Web.Services ....
a1204773
4

System.Web.HttpContext.Current.Server.MapPath("~/") дает значение null, если мы вызываем его из потока.

Итак, попробуйте использовать

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

Равиндра Сингх Чхабра
источник
1

Сначала добавьте ссылку System.web, если у вас ее нет. Сделайте это в папке « Ссылки ».

Затем вы можете использовать Hosting.HostingEnvironment.MapPath(path);

Jdisla
источник
1
bool IsExist = System.IO.Directory.Exists(HttpContext.Current.Server.MapPath("/UploadedFiles/"));
if (!IsExist)
    System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath("/UploadedFiles/"));

StreamWriter textWriter = File.CreateText(Path.Combine(HttpContext.Current.Server.MapPath("/UploadedFiles/") + "FileName.csv"));
var csvWriter = new CsvWriter(textWriter, System.Globalization.CultureInfo.CurrentCulture);
csvWriter.WriteRecords(classVM);
user13048334
источник
Ответы, состоящие только из кода, считаются низкокачественными: обязательно объясните, что делает ваш код и как он решает проблему. Если вы добавите дополнительную информацию в свой пост, это поможет как спрашивающему, так и будущим читателям. См. « Объяснение ответов на основе кода»
Калос,
0

Попробуйте добавить System.Webссылку на свой проект.

jabu.hlong
источник
0

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

Dim Server = HttpContext.Current.Server

или ты можешь сделать функцию

Public Function MapPath(sPath as String)
    return HttpContext.Current.Server.MapPath(sPath)
End Function

Я стремлюсь облегчить жизнь. Я также добавил его в свой класс Utilities на случай, если снова столкнусь с этим.

Гай Котал
источник