Не вдається використовувати Server.MapPath


111

Що я повинен зробити, щоб зробити Server.MapPathроботу?
У мене єusing System.Web;

що ще? Коли я набираю Server, немає швидкого результату (Intelli-sense) для Server.

Будь-яка допомога?


1
Потрібно надати більше інформації. Що це за проект? Чому ви хочете запустити Server.MapPath? Це проект веб-форм і чи пишете ви код у підкласі Сторінка чи у функції візуалізації ASPX?
Дай

C # Winforms .. Я хочу перевірити наявність файлу на сервері
a1204773

Відповіді:


286

ви можете спробувати скористатися цим

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

або використовувати HostingEnvironment.MapPath

    System.Web.Hosting.HostingEnvironment.MapPath(path);

1
Вони не працюють .... Помилка 1 Назва або простору імен 'HttpContext' не існує в просторі імен 'System.Web' (у вас відсутня посилання на збірку?) ... Помилка 2 Ім'я типу або простору імен 'Хостинг' не існує в просторі імен 'System.Web'
a1204773

схоже, що ви використовуєте winforms, ви можете побачити це посилання, а потім налагодження.com
bug/18951

4
Я теж HostingEnvironment.MapPath працював, і я використовую його поза контролером.
Лука

Перш за все, ваш проект повинен посилатися на System.Web.dll, і він буде працювати
ihebiheb

Як прочитати файл, присутній у цьому каталозі "~ / AppData / Роумінг"?
Мурлідхар Фічадія

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

Firt додайте посилання System.web, якщо у вас немає. Зробіть це в папці References .

Потім можна використовувати Hosting.HostingEnvironment.MapPath(path);


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);

Відповіді, що стосуються лише коду, вважаються низькою якістю: обов’язково надайте пояснення, що робить ваш код і як він вирішує проблему. Це допоможе запитувачу та майбутнім читачам, якщо ви зможете додати більше інформації у своєму дописі. Див. Пояснення відповідей на основі коду
Калос,



0

Я знаю, що цій посаді є кілька років, але те, що я роблю, - це додати цей рядок до початку вашого класу, і ви все одно зможете користуватися сервером Server.MapPath

Dim Server = HttpContext.Current.Server

або ви можете зробити функцію

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

Я все про те, щоб полегшити справи. Я також додав його до свого класу «Утиліти» на всякий випадок, якщо я знову наткнувся на це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.